Spec-Zone.ru › Qt 5.13

Класс QUrl

Класс QUrl предоставляет удобный интерфейс для работы с URL-адресами. Подробнее...

Заголовок: #include <QUrl>
qmake: QT += core
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Примечание: Все функции в этом классе являются реентерабельными.

Открытые типы

Перечисление ComponentFormattingOption { PrettyDecoded, EncodeSpaces, EncodeUnicode, EncodeDelimiters, ..., FullyDecoded }
флаги ComponentFormattingOptions
флаги FormattingOptions
Перечисление ParsingMode { TolerantMode, StrictMode, DecodedMode }
Перечисление UrlFormattingOption { None, RemoveScheme, RemovePassword, RemoveUserInfo, ..., NormalizePathSegments }
Перечисление UserInputResolutionOption { DefaultResolution, AssumeLocalFile }
флаги UserInputResolutionOptions

Открытые функции

QUrl(QUrl &&other)
QUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode)
QUrl(const QUrl &other)
QUrl()
QUrl & operator=(QUrl &&other)
QUrl & operator=(const QString &url)
QUrl & operator=(const QUrl &url)
~QUrl()
QUrl adjusted(QUrl::FormattingOptions options) const
QString authority(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
void clear()
QString errorString() const
QString fileName(QUrl::ComponentFormattingOptions options = FullyDecoded) const
QString fragment(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
bool hasFragment() const
bool hasQuery() const
QString host(QUrl::ComponentFormattingOptions options = FullyDecoded) const
bool isEmpty() const
bool isLocalFile() const
bool isParentOf(const QUrl &childUrl) const
bool isRelative() const
bool isValid() const
bool matches(const QUrl &url, QUrl::FormattingOptions options) const
QString password(QUrl::ComponentFormattingOptions options = FullyDecoded) const
QString path(QUrl::ComponentFormattingOptions options = FullyDecoded) const
int port(int defaultPort = -1) const
QString query(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
QUrl resolved(const QUrl &relative) const
QString scheme() const
void setAuthority(const QString &authority, QUrl::ParsingMode mode = TolerantMode)
void setFragment(const QString &fragment, QUrl::ParsingMode mode = TolerantMode)
void setHost(const QString &host, QUrl::ParsingMode mode = DecodedMode)
void setPassword(const QString &password, QUrl::ParsingMode mode = DecodedMode)
void setPath(const QString &path, QUrl::ParsingMode mode = DecodedMode)
void setPort(int port)
void setQuery(const QString &query, QUrl::ParsingMode mode = TolerantMode)
void setQuery(const QUrlQuery &query)
void setScheme(const QString &scheme)
void setUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode)
void setUserInfo(const QString &userInfo, QUrl::ParsingMode mode = TolerantMode)
void setUserName(const QString &userName, QUrl::ParsingMode mode = DecodedMode)
void swap(QUrl &other)
CFURLRef toCFURL() const
QString toDisplayString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const
QByteArray toEncoded(QUrl::FormattingOptions options = FullyEncoded) const
QString toLocalFile() const
NSURL * toNSURL() const
QString toString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const
QString topLevelDomain(QUrl::ComponentFormattingOptions options = FullyDecoded) const
QString url(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const
QString userInfo(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
QString userName(QUrl::ComponentFormattingOptions options = FullyDecoded) const
bool operator!=(const QUrl &url) const
bool operator==(const QUrl &url) const

Статические публичные члены

QString fromAce(const QByteArray &domain)
QUrl fromCFURL(CFURLRef url)
QUrl fromEncoded(const QByteArray &input, QUrl::ParsingMode parsingMode = TolerantMode)
QUrl fromLocalFile(const QString &localFile)
QUrl fromNSURL(const NSURL *url)
QString fromPercentEncoding(const QByteArray &input)
QList<QUrl> fromStringList(const QStringList &urls, QUrl::ParsingMode mode = TolerantMode)
QUrl fromUserInput(const QString &userInput)
QUrl fromUserInput(const QString &userInput, const QString &workingDirectory, QUrl::UserInputResolutionOptions options = DefaultResolution)
QStringList idnWhitelist()
void setIdnWhitelist(const QStringList &list)
QByteArray toAce(const QString &domain)
QByteArray toPercentEncoding(const QString &input, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray())
QStringList toStringList(const QList<QUrl> &urls, QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded))

Связанные нечлены

QDataStream & operator<<(QDataStream &out, const QUrl &url)
QDataStream & operator>>(QDataStream &in, QUrl &url)

Макросы

QT_NO_URL_CAST_FROM_STRING

Подробное описание

Она может анализировать и создавать URL как в закодированном, так и в незакодированном виде. QUrl также поддерживает интернационализованные доменные имена (IDN).

Наиболее распространённый способ использования QUrl — инициализировать его через конструктор, передавая QString. В противном случае можно использовать setUrl().

URL могут быть представлены в двух форматах: закодированном и незакодированном. Незакодированное представление подходит для отображения пользователю, но закодированное представление обычно используется для отправки на веб-сервер. Например, незакодированный URL «http://bühler.example.com/List of applicants.xml» будет отправлен на сервер как «http://xn--bhler-kva.example.com/List%20of%20applicants.xml».

URL также можно создавать по частям, вызывая setScheme(), setUserName(), setPassword(), setHost(), setPort(), setPath(), setQuery() и setFragment(). Также доступны некоторые вспомогательные функции: setAuthority() устанавливает имя пользователя, пароль, хост и порт. setUserInfo() устанавливает имя пользователя и пароль сразу.

Вызовите isValid(), чтобы проверить, является ли URL допустимым. Это можно сделать в любой момент во время создания URL. Если isValid() возвращает false, вы должны clear() URL перед продолжением или начать заново, проанализировав новый URL с помощью setUrl().

Создание запроса особенно удобно с помощью класса QUrlQuery и его методов QUrlQuery::setQueryItems(), QUrlQuery::addQueryItem() и QUrlQuery::removeQueryItem(). Используйте QUrlQuery::setQueryDelimiters(), чтобы настроить разделители, используемые для создания строки запроса.

Для удобства генерации закодированных строк URL или строк запроса существуют две статические функции: fromPercentEncoding() и toPercentEncoding(), которые обрабатывают кодирование процентов и декодирование объектов QString.

fromLocalFile() создаёт QUrl путём анализа пути к локальному файлу. toLocalFile() преобразует URL в путь к локальному файлу.

Человекопонятное представление URL извлекается с помощью toString(). Это представление подходит для отображения URL пользователю в незакодированном формате. Закодированная форма, возвращаемая toEncoded(), предназначена для внутреннего использования, передачи на веб-серверы, почтовые клиенты и т. д. Оба формата технически корректны и однозначно представляют один и тот же URL — на самом деле, передача любого из них в конструктор QUrl или в setUrl() даст тот же объект QUrl.

QUrl соответствует спецификации URI из RFC 3986 (Унифицированный идентификатор ресурса: Общий синтаксис) и включает расширения схемы из RFC 1738 (Унифицированные указатели ресурсов). Правила преобразования регистра в QUrl соответствуют RFC 3491 (Nameprep: Профиль Stringprep для интернационализованных доменных имён (IDN)). Он также совместим со спецификацией URI файлов freedesktop.org, при условии, что имена файлов кодируются в локале с использованием UTF-8 (требуется для IDN).

Относительные URL-адреса по сравнению с относительными путями

Вызов isRelative() вернёт true, если URL относительный. Относительный URL не имеет схемы. Например:

    qDebug() << QUrl("main.qml").isRelative();          // true: no scheme
    qDebug() << QUrl("qml/main.qml").isRelative();      // true: no scheme
    qDebug() << QUrl("file:main.qml").isRelative();     // false: has "file" scheme
    qDebug() << QUrl("file:qml/main.qml").isRelative(); // false: has "file" scheme

Обратите внимание, что URL может быть абсолютным, содержа при этом относительный путь, и наоборот:

    // Absolute URL, relative path
    QUrl url("file:file.txt");
    qDebug() << url.isRelative();                 // false: has "file" scheme
    qDebug() << QDir::isAbsolutePath(url.path()); // false: relative path

    // Relative URL, absolute path
    url = QUrl("/home/user/file.txt");
    qDebug() << url.isRelative();                 // true: has no scheme
    qDebug() << QDir::isAbsolutePath(url.path()); // true: absolute path

Относительный URL может быть разрешен, передав его в качестве аргумента в resolved(), который возвращает абсолютный URL. isParentOf() используется для определения, является ли один URL родителем другого.

Проверка ошибок

QUrl способен обнаруживать многие ошибки в URL при его анализе или при установке компонентов URL с помощью отдельных методов-установителей (таких как setScheme(), setHost() или setPath()). Если функция анализа или установка успешна, любые ранее записанные условия ошибки будут отброшены.

По умолчанию методы-установители QUrl работают в режиме QUrl::TolerantMode, что означает, что они принимают некоторые распространённые ошибки и неправильное представление данных. Альтернативный метод анализа — QUrl::StrictMode, который применяет дополнительные проверки. См. QUrl::ParsingMode для описания различий в режимах анализа.

QUrl проверяет только соответствие спецификации URL. Он не пытается проверить, что URL протокола высокого уровня находятся в ожидаемом формате обработчиками в других местах. Например, следующие URI считаются допустимыми QUrl, даже если они не имеют смысла при использовании:

  • "http:/filename.html"
  • "mailto://example.com"

Когда анализатор обнаруживает ошибку, он сигнализирует об этом, сделав isValid() false и toString() / toEncoded() возвратив пустую строку. Если необходимо показать пользователю причину, по которой URL не удалось проанализировать, состояние ошибки можно получить из QUrl, вызвав errorString(). Обратите внимание, что это сообщение очень техническое и может быть непонятным для конечных пользователей.

QUrl способен записывать только одно состояние ошибки. Если найдено более одной ошибки, неизвестно, какая ошибка будет сообщена.

Преобразования символов

Следуйте этим правилам, чтобы избежать ошибочных преобразований символов при работе с URL и строками:

  • При создании QString для хранения URL из QByteArray или char*, всегда используйте QString::fromUtf8().

Документация по типам членов

enum QUrl::ComponentFormattingOptionflags QUrl::ComponentFormattingOptions

Параметры форматирования компонентов определяют, как компоненты URL будут отформатированы при выводе в виде текста. Их можно комбинировать с параметрами из QUrl::FormattingOptions при использовании в toString() и toEncoded().

Константа Значение Описание
QUrl::PrettyDecoded 0x000000 Компонент возвращается в "красивом" формате, при этом большинство процентов кодированных символов декодируются. Точное поведение PrettyDecoded зависит от компонента и может меняться в разных релизах Qt. Это значение по умолчанию.
QUrl::EncodeSpaces 0x100000 Пробелы остаются в кодированном виде ("%20").
QUrl::EncodeUnicode 0x200000 Символы, не являющиеся символами US-ASCII, остаются закодированными в их UTF-8 процентах кодированном виде (например, "%C3%A9" для кодовой точки U+00E9, строчная буква "e" с острым ударением).
QUrl::EncodeDelimiters 0x400000 | 0x800000 Определённые разделители остаются в кодированном виде, как они отображаются в URL, когда весь URL представлен в виде текста. Разделители могут зависеть от компонента. Этот флаг не влияет на toString() или toEncoded().
QUrl::EncodeReserved 0x1000000 Символы US-ASCII, запрещённые спецификацией URL, остаются в кодированном виде. Это значение по умолчанию в toString() и toEncoded().
QUrl::DecodeReserved 0x2000000 Декодируются символы US-ASCII, не разрешённые в URL-спецификации. Это значение по умолчанию в геттерах отдельных компонентов.
QUrl::FullyEncoded EncodeSpaces | EncodeUnicode | EncodeDelimiters | EncodeReserved Все символы остаются в надлежащем кодированном виде, как если бы этот компонент был частью URL. При использовании с toString() это приводит к полностью соответствующему URL в формате QString, точно совпадающему с результатом toEncoded().
QUrl::FullyDecoded FullyEncoded | DecodeReserved | 0x4000000 Попытка декодировать как можно больше. Для отдельных компонентов URL это декодирует все последовательности процентов кодирования, включая управляющие символы (U+0000 до U+001F) и UTF-8 последовательности, найденные в процентах кодированном виде. Использование этого режима может привести к потере данных, см. ниже дополнительную информацию.

Значения EncodeReserved и DecodeReserved не должны использоваться вместе в одном вызове. Поведение в этом случае не определено. Они предоставляются как отдельные значения, потому что поведение "красивого режима" в отношении зарезервированных символов отличается для определённых компонентов и, в особенности, для полного URL.

Полное декодирование

Режим FullyDecoded похож на поведение функций, возвращающих QString в Qt 4.x, в том смысле, что каждый символ представляет собой себя и никогда не имеет никакого специального значения. Это верно даже для символа процента ('%'), который должен интерпретироваться как буквальный процент, а не как начало последовательности процентов кодирования. Тот же самый символ в других режимах декодирования представляется последовательностью "%25".

При повторном применении данных, полученных с помощью QUrl::FullyDecoded в QUrl, необходимо использовать параметр QUrl::DecodedMode в установщиках (например, setPath() и setUserName()). Несоблюдение этого может привести к повторной интерпретации символа процента ('%') как начала последовательности процентов кодирования.

Этот режим очень полезен, когда части URL используются в контексте, не являющемся URL. Например, для извлечения имени пользователя, пароля или пути к файлам в приложении FTP-клиента следует использовать режим FullyDecoded.

Этот режим следует использовать с осторожностью, поскольку существуют два условия, которые невозможно надёжно представить в возвращаемом QString.

  • Последовательности, не являющиеся UTF-8: URL могут содержать последовательности процентов кодированных символов, которые не образуют действительных UTF-8 последовательностей. Поскольку URL необходимо декодировать с использованием UTF-8, любая ошибка декодера приведёт к тому, что QString будет содержать один или несколько символов замены там, где существовала последовательность.
  • Кодированные разделители: URL также могут различать разделитель в буквальной форме и его эквивалент в процентах кодированном виде. Это чаще всего встречается в запросе, но допускается во многих частях URL.

Следующий пример иллюстрирует проблему:

    QUrl original("http://example.com/?q=a%2B%3Db%26c");
    QUrl copy(original);
    copy.setQuery(copy.query(QUrl::FullyDecoded), QUrl::DecodedMode);

    qDebug() << original.toString();   // prints: http://example.com/?q=a%2B%3Db%26c
    qDebug() << copy.toString();       // prints: http://example.com/?q=a+=b&c

Если бы оба URL использовались через HTTP GET, интерпретация веб-сервером, вероятно, была бы другой. В первом случае он интерпретировал бы как один параметр с ключом "q" и значением "a+=b&c". Во втором случае он, вероятно, интерпретировал бы как два параметра: один с ключом "q" и значением "a =b", а второй с ключом "c" и без значения.

Этот перечисление был введен или изменен в Qt 5.0.

Тип ComponentFormattingOptions является типом typedef для QFlags<ComponentFormattingOption>. Он хранит логическое ИЛИ сочетание значений ComponentFormattingOption.

См. также QUrl::FormattingOptions.

перечисление QUrl::ParsingMode

Режим парсинга управляет способом, которым QUrl анализирует строки.

Константа Значение Описание
QUrl::TolerantMode 0 QUrl будет пытаться исправить некоторые распространённые ошибки в URL. Этот режим полезен для парсинга URL, полученных из источников, не известных как строго соответствующие стандартам.
QUrl::StrictMode 1 Принимаются только корректные URL. Этот режим полезен для общей проверки URL.
QUrl::DecodedMode 2 QUrl будет интерпретировать компонент URL в полностью декодированном виде, где символы процента представляют собой сами себя, а не начало последовательности процентов кодирования. Этот режим допустим только для установщиков, устанавливающих компоненты URL; он недопустим в конструкторе QUrl, в fromEncoded() или в setUrl(). Для получения дополнительной информации об этом режиме см. документацию для QUrl::FullyDecoded.

В режиме TolerantMode парсер ведет себя следующим образом:

  • Пробелы и "%20": некодированные пробелы будут приняты и будут эквивалентны "%20".
  • Одиночные символы "%": Любые случаи символа процента "%", за которым не следует ровно два шестнадцатеричных символа (например, "13% coverage.html"), будут заменены на "%25". Обратите внимание, что одиночный "%" символ вызовет режим исправления для всех символов процента.
  • Зарезервированные и незарезервированные символы: закодированный URL должен содержать только несколько символов в буквальном виде; все остальные символы должны быть закодированы в процентах. В режиме TolerantMode эти символы будут приняты, если они найдены в URL: пробел / двойная кавычка / "<" / ">" / "" / "^" / "`" / "{" / "|" / "}". Эти же символы могут быть декодированы снова, передав QUrl::DecodeReserved в toString() или toEncoded(). В геттерах отдельных компонентов эти символы часто возвращаются в декодированном виде.

В режиме StrictMode, если обнаружена ошибка парсинга, isValid() вернёт false а errorString() вернёт сообщение об ошибке. Если обнаружено несколько ошибок, неопределено, какая из них будет сообщена.

Обратите внимание, что режима TolerantMode обычно недостаточно для парсинга пользовательского ввода, который часто содержит больше ошибок и ожиданий, чем может обработать парсер. При работе с данными, полученными непосредственно от пользователя (в отличие от данных, полученных из источников передачи данных, таких как другие программы), рекомендуется использовать fromUserInput().

См. также fromUserInput(), setUrl(), toString(), toEncoded(), и QUrl::FormattingOptions.

перечисление QUrl::UrlFormattingOptionфлаги QUrl::FormattingOptions

Параметры форматирования определяют, как URL форматируется при записи в виде текста.

END_OF_DOCUMENT_MARKER
Постоянная Значение Описание
QUrl::None 0x0 Формат URL не изменяется.
QUrl::RemoveScheme 0x1 Схема удаляется из URL.
QUrl::RemovePassword 0x2 Любой пароль в URL удаляется.
QUrl::RemoveUserInfo RemovePassword | 0x4 Любая информация пользователя в URL удаляется.
QUrl::RemovePort 0x8 Любой указанный порт удаляется из URL.
QUrl::RemoveAuthority RemoveUserInfo | RemovePort | 0x10
QUrl::RemovePath 0x20 Путь URL удаляется, оставляя только схему, адрес хоста и порт (если присутствует).
QUrl::RemoveQuery 0x40 Часть запроса URL (после символа «?») удаляется.
QUrl::RemoveFragment 0x80
QUrl::RemoveFilename 0x800 Имя файла (т.е. всё после последнего «/» в пути) удаляется. Конечный «/» сохраняется, если параметр StripTrailingSlash установлен. Действует только если RemovePath не установлен.
QUrl::PreferLocalFile 0x200 Если URL является локальным файлом в соответствии с isLocalFile() и не содержит запроса или фрагмента, возвращается локальный путь к файлу.
QUrl::StripTrailingSlash 0x400 Конечный слеш удаляется из пути, если он присутствует.
QUrl::NormalizePathSegments 0x1000 Изменяет путь, удаляя лишние разделители директорий и разрешая «.» и «..» (насколько это возможно). Для нелокальных путей соседние слеши сохраняются.

Обратите внимание, что правила преобразования регистра в Nameprep, которым соответствует QUrl, требуют, чтобы имена хостов всегда преобразовывались в нижний регистр, независимо от используемых параметров Qt::FormattingOptions.

Также возможны параметры из QUrl::ComponentFormattingOptions.

Тип FormattingOptions является псевдонимом для QFlags<UrlFormattingOption>. Он хранит комбинацию значений UrlFormattingOption, объединённых операцией ИЛИ.

См. также QUrl::ComponentFormattingOptions.

enum QUrl::UserInputResolutionOptionflags QUrl::UserInputResolutionOptions

Параметры разрешения пользовательского ввода определяют, как fromUserInput() должен интерпретировать строки, которые могут быть либо относительным путем, либо сокращенной формой URL HTTP. Например, file.pl может быть либо локальным файлом, либо URL http://file.pl.

Постоянная Значение Описание
QUrl::DefaultResolution 0 По умолчанию механизм разрешения проверяет, существует ли локальный файл в рабочей директории, заданной для fromUserInput, и возвращает локальный путь только в этом случае. В противном случае предполагается URL.
QUrl::AssumeLocalFile 1 Этот параметр заставляет fromUserInput() всегда возвращать локальный путь, если вход не содержит схемы, такой как http://file.pl. Это полезно для приложений, таких как текстовые редакторы, которые могут создавать файл, если он не существует.

Этот перечисление был введён или изменён в Qt 5.4.

Тип UserInputResolutionOptions является псевдонимом для QFlags<UserInputResolutionOption>. Он хранит комбинацию значений UserInputResolutionOption, объединённых операцией ИЛИ.

См. также fromUserInput().

Документация по функциям-членам

QUrl::QUrl(QUrl &&other)

Перемещающее создание экземпляра QUrl, делающее его указывающим на тот же объект, на который указывал other.

Эта функция была добавлена в Qt 5.2.

QUrl::QUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode)

Создаёт URL, анализируя url. QUrl автоматически кодирует по процентам все символы, которые не разрешены в URL, и декодирует последовательности, закодированные по процентам, которые представляют незарезервированные символы (буквы, цифры, тире, нижние подчеркивания, точки и тильды). Все остальные символы оставляются в исходных формах.

Анализирует url с помощью режима анализа parsingMode. В режиме TolerantMode (по умолчанию) QUrl исправит некоторые ошибки, в частности, наличие символа процента ('%') без двух шестнадцатеричных цифр после него, и примет любой символ в любой позиции. В режиме StrictMode ошибки кодирования не будут допущены, и QUrl также проверит, что определённые запрещённые символы отсутствуют в некодированном виде. Если ошибка обнаружена в режиме StrictMode, isValid() вернёт false. Режим анализа DecodedMode в этом контексте недопустим.

Пример:

QUrl url("http://www.example.com/List of holidays.xml");
// url.toEncoded() == "http://www.example.com/List%20of%20holidays.xml"

Для создания URL из закодированной строки также можно использовать fromEncoded():

QUrl url = QUrl::fromEncoded("http://qt-project.org/List%20of%20holidays.xml");

Обе функции эквивалентны и в Qt 5 обе функции принимают закодированные данные. Обычно выбор конструктора QUrl или setUrl() по сравнению с fromEncoded() зависит от исходных данных: конструктор и setUrl() принимают QString, тогда как fromEncoded() принимает QByteArray.

См. также setUrl(), fromEncoded() и TolerantMode.

QUrl::QUrl(const QUrl &other)

Создаёт копию other.

QUrl::QUrl()

Создаёт пустой объект QUrl.

QUrl &QUrl::operator=(QUrl &&other)

Перемещающее присваивание other этому экземпляру QUrl.

Эта функция была добавлена в Qt 5.2.

QUrl &QUrl::operator=(const QString &url)

Присваивает указанный url этому объекту.

QUrl &QUrl::operator=(const QUrl &url)

Присваивает указанный url этому объекту.

QUrl::~QUrl()

Деструктор; вызывается непосредственно перед удалением объекта.

QUrl QUrl::adjusted(QUrl::FormattingOptions options) const

Возвращает изменённую версию URL. Вывод можно настроить, передав флаги с options.

Параметры кодирования из QUrl::ComponentFormattingOption в этом методе не имеют большого смысла, как и QUrl::PreferLocalFile.

Это всегда эквивалентно QUrl(url.toString(options)).

Эта функция была добавлена в Qt 5.2.

См. также FormattingOptions, toEncoded() и toString().

QString QUrl::authority(QUrl::ComponentFormattingOptions options = PrettyDecoded) const

Возвращает область авторитета URL, если она определена; в противном случае возвращается пустая строка.

Эта функция возвращает однозначное значение, которое может содержать символы, ещё закодированные по процентам, плюс некоторые управляющие последовательности, не представимые в декодированном виде в QString.

Аргумент options управляет форматированием компонента информации пользователя. Значение QUrl::FullyDecoded в этой функции недопустимо. Если вам нужно получить полностью декодированные данные, вызовите userName(), password(), host() и port() по отдельности.

См. также setAuthority(), userInfo(), userName(), password(), host() и port().

void QUrl::clear()

Сбрасывает содержимое QUrl. После вызова этой функции QUrl равен объекту, созданному с помощью конструктора по умолчанию для пустых значений.

См. также isEmpty().

QString QUrl::errorString() const

Возвращает сообщение об ошибке, если последняя операция, которая изменила этот объект QUrl, столкнулась с ошибкой разбора. Если ошибка не была обнаружена, эта функция возвращает пустую строку, а isValid() возвращает true.

Сообщение об ошибке, возвращаемое этой функцией, носит технический характер и может быть не понято конечными пользователями. Оно в основном полезно разработчикам, пытающимся понять, почему QUrl не принимает некоторый ввод.

Эта функция была добавлена в Qt 4.2.

См. также QUrl::ParsingMode.

QString QUrl::fileName(QUrl::ComponentFormattingOptions options = FullyDecoded) const

Возвращает имя файла, исключая путь к каталогу.

Обратите внимание, что если этому объекту QUrl задан путь, заканчивающийся слешем, имя файла считается пустым.

Если путь не содержит слешей, он полностью возвращается как fileName.

Пример:

QUrl url("http://qt-project.org/support/file.html");
// url.adjusted(RemoveFilename) == "http://qt-project.org/support/"
// url.fileName() == "file.html"

Аргумент options управляет способом форматирования компонента имени файла. Все значения дают однозначный результат. При использовании QUrl::FullyDecoded все последовательности процентов декодируются; в противном случае возвращаемое значение может содержать некоторые последовательности процентов для некоторых управляющих последовательностей, которые не могут быть представлены в декодированном виде в QString.

Эта функция была добавлена в Qt 5.2.

См. также path().

QString QUrl::fragment(QUrl::ComponentFormattingOptions options = PrettyDecoded) const

Возвращает фрагмент URL-адреса. Чтобы определить, содержал ли разбор URL-адреса фрагмент, используйте hasFragment().

Аргумент options управляет способом форматирования компонента фрагмента. Все значения дают однозначный результат. При использовании QUrl::FullyDecoded все последовательности процентов декодируются; в противном случае возвращаемое значение может содержать некоторые последовательности процентов для некоторых управляющих последовательностей, которые не могут быть представлены в декодированном виде в QString.

Обратите внимание, что QUrl::FullyDecoded может привести к потере данных, если такие непредставимые последовательности присутствуют. Рекомендуется использовать это значение, когда результат будет использоваться в контексте, не являющемся URL.

См. также setFragment() и hasFragment().

[static] QString QUrl::fromAce(const QByteArray &domain)

Возвращает Unicode-форму данного доменного имени domain, которое закодировано в ASCII-совместимом кодировании (ACE). Результат этой функции считается эквивалентным domain.

Если значение в domain не может быть закодировано, оно будет преобразовано в QString и возвращено.

ASCII-совместимое кодирование (ACE) определяется RFC 3490, RFC 3491 и RFC 3492. Оно является частью спецификации интернационализации доменных имён в приложениях (IDNA), которая позволяет доменным именам (например, "example.com") записываться с использованием международных символов.

Эта функция была добавлена в Qt 4.2.

[static] QUrl QUrl::fromCFURL(CFURLRef url)

Создаёт QUrl, содержащую копию CFURL url.

Эта функция была добавлена в Qt 5.2.

[static] QUrl QUrl::fromEncoded(const QByteArray &input, QUrl::ParsingMode parsingMode = TolerantMode)

Разбирает input и возвращает соответствующий объект QUrl. Предполагается, что input находится в закодированном виде и содержит только символы ASCII.

Разбирает URL-адрес, используя parsingMode. Подробнее об этом параметре см. setUrl(). QUrl::DecodedMode запрещён в данном контексте.

См. также toEncoded() и setUrl().

[static] QUrl QUrl::fromLocalFile(const QString &localFile)

Возвращает представление QUrl для localFile, интерпретируемого как локальный файл. Эта функция принимает пути, разделенные слешами, а также системный разделитель.

Эта функция также принимает пути с удвоенным начальным слешем (или обратным слешем), чтобы указать на удалённый файл, как в "//servername/path/to/file.txt". Обратите внимание, что только некоторые платформы могут фактически открыть этот файл с помощью QFile::open().

Пустая localFile приводит к пустому URL-адресу (с Qt 5.4).

    qDebug() << QUrl::fromLocalFile("file.txt");            // QUrl("file:file.txt")
    qDebug() << QUrl::fromLocalFile("/home/user/file.txt"); // QUrl("file:///home/user/file.txt")
    qDebug() << QUrl::fromLocalFile("file:file.txt");       // doesn't make sense; expects path, not url with scheme

В первой строке примера URL-адрес файла создается из локального относительного пути. URL-адрес файла с относительным путём имеет смысл только в том случае, если существует базовый URL-адрес для его разрешения. Например:

    QUrl url = QUrl::fromLocalFile("file.txt");
    QUrl baseUrl = QUrl("file:/home/user/");
    // wrong: prints QUrl("file:file.txt"), as url already has a scheme
    qDebug() << baseUrl.resolved(url);

Для разрешения такого URL-адреса необходимо предварительно удалить схему:

    // correct: prints QUrl("file:///home/user/file.txt")
    url.setScheme(QString());
    qDebug() << baseUrl.resolved(url);

По этой причине лучше использовать относительный URL-адрес (т.е. без схемы) для относительных путей к файлам:

    QUrl url = QUrl("file.txt");
    QUrl baseUrl = QUrl("file:/home/user/");
    // prints QUrl("file:///home/user/file.txt")
    qDebug() << baseUrl.resolved(url);

См. также toLocalFile(), isLocalFile() и QDir::toNativeSeparators().

[static] QUrl QUrl::fromNSURL(const NSURL *url)

Создаёт QUrl, содержащую копию NSURL url.

Эта функция была добавлена в Qt 5.2.

[static] QString QUrl::fromPercentEncoding(const QByteArray &input)

Возвращает декодированную копию input. input сначала декодируется из кодировки процентов, затем преобразуется из UTF-8 в Unicode.

Примечание: При неверном вводе (например, строке, содержащей последовательность "%G5", которая не является допустимым шестнадцатеричным числом), вывод также будет недопустимым. Например, последовательность "%G5" может быть декодирована как 'W'.

[static] QList<QUrl> QUrl::fromStringList(const QStringList &urls, QUrl::ParsingMode mode = TolerantMode)

Преобразует список строк, представляющих urls, в список URL-адресов, используя QUrl(str, mode). Обратите внимание, что это означает, что все строки должны быть URL-адресами, а не, например, локальными путями.

Эта функция была добавлена в Qt 5.1.

[static] QUrl QUrl::fromUserInput(const QString &userInput)

Возвращает допустимый URL-адрес из введённой пользователем строки userInput, если он может быть выведен. В случае невозможности возвращается недопустимый QUrl().

Большинство приложений, которые могут просматривать веб-страницы, позволяют пользователю вводить URL-адрес в виде обычной строки. Эта строка может быть введена вручную в адресную строку, получена из буфера обмена или передана в качестве аргумента командной строки.

Когда строка не является уже допустимым URL-адресом, выполняется наилучшее предположение, делая различные веб-связанные предположения.

В случае, если строка соответствует допустимому пути к файлу в системе, строится URL-адрес file://, используя QUrl::fromLocalFile().

Если это не так, производится попытка преобразовать строку в URL-адрес http:// или ftp://. Последнее в случае, если строка начинается с 'ftp'. Затем результат передается в толерантный анализатор QUrl, и в случае успеха возвращается допустимый QUrl, в противном случае — QUrl().

Примеры:

  • qt-project.org становится http://qt-project.org
  • ftp.qt-project.org становится ftp://ftp.qt-project.org
  • hostname становится http://hostname
  • /home/user/test.html становится file:///home/user/test.html

Эта функция была добавлена в Qt 4.6.

[static] QUrl QUrl::fromUserInput(const QString &userInput, const QString &workingDirectory, QUrl::UserInputResolutionOptions options = DefaultResolution)

Возвращает допустимый URL-адрес из введённой пользователем строки userInput, если он может быть выведен. В случае невозможности возвращается недопустимый QUrl().

Этот перегруз перенимает путь workingDirectory, чтобы иметь возможность обрабатывать относительные пути. Это особенно полезно при обработке аргументов командной строки. Если workingDirectory пусто, обработка относительных путей не выполняется, поэтому этот метод будет вести себя как его одноаргументный перегруз.

По умолчанию строка ввода, похожая на относительный путь, будет рассматриваться как таковая только в том случае, если файл действительно существует в указанном каталоге.

Если приложение может обрабатывать файлы, которые ещё не существуют, оно должно передать флаг AssumeLocalFile в options.

Эта функция была добавлена в Qt 5.4.

bool QUrl::hasFragment() const

Возвращает true , если этот URL содержит фрагмент (т.е. если в нём был виден символ #).

Эта функция была добавлена в Qt 4.2.

См. также fragment() и setFragment().

bool QUrl::hasQuery() const

Возвращает true , если этот URL содержит запрос (т.е. если в нём был виден символ ?).

Эта функция была добавлена в Qt 4.2.

См. также setQuery(), query() и hasFragment().

QString QUrl::host(QUrl::ComponentFormattingOptions options = FullyDecoded) const

Возвращает хост URL, если он определён; в противном случае возвращается пустая строка.

Аргумент options управляет форматированием имени хоста. Флаг QUrl::EncodeUnicode заставляет функцию возвращать имя хоста в формате ASCII-совместимого кодирования (ACE), подходящего для каналов, которые не являются 8-битно чистыми или требуют устаревшего имени хоста (например, запросы DNS или заголовки HTTP-запросов). Если этот флаг отсутствует, функция возвращает имя домена с международными символами (IDN) в формате Unicode в соответствии со списком разрешённых доменных имён верхнего уровня (см. idnWhitelist()).

Все остальные флаги игнорируются. Имена хостов не могут содержать управляющие символы или символы процента, поэтому возвращаемое значение можно считать полностью декодированным.

См. также setHost(), idnWhitelist(), setIdnWhitelist() и authority().

[static] QStringList QUrl::idnWhitelist()

Возвращает текущий белый список доменных имён верхнего уровня, которые могут содержать не-ASCII символы.

См. setIdnWhitelist() для обоснования этого списка.

Функция была добавлена в Qt 4.2.

См. также setIdnWhitelist().

bool QUrl::isEmpty() const

Возвращает true если URL не содержит данных; в противном случае возвращает false.

См. также clear().

bool QUrl::isLocalFile() const

Возвращает true если данный URL указывает на локальный путь к файлу. URL является локальным путём к файлу, если схема равна "file".

Обратите внимание, что эта функция рассматривает URL с именами хостов как локальные пути к файлам, даже если конечный путь к файлу нельзя открыть с помощью QFile::open().

Функция была добавлена в Qt 4.8.

См. также fromLocalFile() и toLocalFile().

bool QUrl::isParentOf(const QUrl &childUrl) const

Возвращает true если данный URL является родителем childUrl. childUrl является дочерним по отношению к данному URL, если у них одинаковая схема и авторизация, и путь данного URL является предком пути childUrl.

bool QUrl::isRelative() const

Возвращает true если URL является относительным; в противном случае возвращает false. URL является относительной ссылкой, если его схема не определена; следовательно, эта функция эквивалентна вызову scheme().isEmpty().

Относительные ссылки определены в RFC 3986 раздел 4.2.

См. также Относительные URL-адреса по сравнению с относительными путями.

bool QUrl::isValid() const

Возвращает true если URL не пустой и корректный; в противном случае возвращает false.

URL проходит тест соответствия. Каждая часть URL должна соответствовать стандартным правилам кодирования стандарта URI, чтобы URL считался корректным.

bool checkUrl(const QUrl &url) {
    if (!url.isValid()) {
        qDebug("Invalid URL: %s", qUtf8Printable(url.toString()));
        return false;
    }

    return true;
}

bool QUrl::matches(const QUrl &url, QUrl::FormattingOptions options) const

Возвращает true если данный URL и заданный url равны после применения options к обоим; в противном случае возвращает false.

Это эквивалентно вызову adjusted(options) для обоих URL и сравнения полученных URL, но быстрее.

Функция была добавлена в Qt 5.2.

QString QUrl::password(QUrl::ComponentFormattingOptions options = FullyDecoded) const

Возвращает пароль URL, если он определён; в противном случае возвращается пустая строка.

Аргумент options управляет форматированием компонента имени пользователя. Все значения дают однозначный результат. С QUrl::FullyDecoded все закодированные последовательности процентов декодируются; в противном случае возвращаемое значение может содержать некоторые закодированные последовательности процентов для некоторых управляющих последовательностей, которые не могут быть представлены в декодированном виде в QString.

Обратите внимание, что QUrl::FullyDecoded может привести к потере данных, если присутствуют непредставимые последовательности. Рекомендуется использовать это значение, когда результат будет использоваться в контексте, не связанном с URL, например, при настройке в QAuthenticator или при переговорке входа.

См. также setPassword().

QString QUrl::path(QUrl::ComponentFormattingOptions options = FullyDecoded) const

Возвращает путь URL.

    qDebug() << QUrl("file:file.txt").path();                   // "file.txt"
    qDebug() << QUrl("/home/user/file.txt").path();             // "/home/user/file.txt"
    qDebug() << QUrl("http://www.example.com/test/123").path(); // "/test/123"

Аргумент options управляет форматированием компонента пути. Все значения дают однозначный результат. С QUrl::FullyDecoded все закодированные последовательности процентов декодируются; в противном случае возвращаемое значение может содержать некоторые закодированные последовательности процентов для некоторых управляющих последовательностей, которые не могут быть представлены в декодированном виде в QString.

Обратите внимание, что QUrl::FullyDecoded может привести к потере данных, если присутствуют такие непредставимые последовательности. Рекомендуется использовать это значение, когда результат будет использован в контексте, не связанном с URL, например, для отправки на FTP-сервер.

Пример потери данных возникает, когда у вас есть не-Unicode закодированные последовательности процентов и вы используете FullyDecoded (по умолчанию):

    qDebug() << QUrl("/foo%FFbar").path();

В этом примере будет некоторая потеря данных, потому что %FF не может быть преобразовано.

Потеря данных также может произойти, когда путь содержит подразделители (например, +):

    qDebug() << QUrl("/foo+bar%2B").path(); // "/foo+bar+"

Другие примеры декодирования:

    const QUrl url("/tmp/Mambo %235%3F.mp3");
    qDebug() << url.path(QUrl::FullyDecoded);  // "/tmp/Mambo #5?.mp3"
    qDebug() << url.path(QUrl::PrettyDecoded); // "/tmp/Mambo #5?.mp3"
    qDebug() << url.path(QUrl::FullyEncoded);  // "/tmp/Mambo%20%235%3F.mp3"

См. также setPath().

int QUrl::port(int defaultPort = -1) const

Возвращает порт URL или defaultPort, если порт не указан.

Пример:

QTcpSocket sock;
sock.connectToHost(url.host(), url.port(80));

Функция была добавлена в Qt 4.1.

См. также setPort().

QString QUrl::query(QUrl::ComponentFormattingOptions options = PrettyDecoded) const

Возвращает строку запроса URL, если она есть, или пустой результат, если нет. Чтобы определить, содержал ли проанализированный URL строку запроса, используйте hasQuery().

Аргумент options управляет форматированием компонента запроса. Все значения дают однозначный результат. С QUrl::FullyDecoded все закодированные последовательности процентов декодируются; в противном случае возвращаемое значение может содержать некоторые закодированные последовательности процентов для некоторых управляющих последовательностей, которые не могут быть представлены в декодированном виде в QString.

Обратите внимание, что использование QUrl::FullyDecoded в запросах не рекомендуется, так как запросы часто содержат данные, которые должны оставаться закодированными в процентах, включая использование последовательности "%2B" для представления символа "+".

См. также setQuery() и hasQuery().

QUrl QUrl::resolved(const QUrl &relative) const

Возвращает результат слияния данного URL и relative. Данный URL используется в качестве базового для преобразования relative в абсолютный URL.

Если relative не является относительным URL, эта функция вернёт relative напрямую. В противном случае пути двух URL сливаются, и новый URL, возвращаемый функцией, имеет схему и авторизацию базового URL, но с объединённым путём, как в следующем примере:

QUrl baseUrl("http://qt.digia.com/Support/");
QUrl relativeUrl("../Product/Library/");
qDebug(baseUrl.resolved(relativeUrl).toString());
// prints "http://qt.digia.com/Product/Library/"

Вызов resolved() с ".." возвращает QUrl, у которого каталог на один уровень выше, чем у исходного. Аналогично, вызов resolved() с "../.." удаляет два уровня из пути. Если relative равно "/", путь становится "/".

См. также isRelative().

QString QUrl::scheme() const

Возвращает схему URL. Если возвращается пустая строка, это означает, что схема не определена, и URL является относительным.

Схема может содержать только буквы или цифры US-ASCII, что означает, что она не может содержать символы, которые в противном случае потребовали бы кодирования. Кроме того, схемы всегда возвращаются в нижнем регистре.

См. также setScheme() и isRelative().

void QUrl::setAuthority(const QString &authority, QUrl::ParsingMode mode = TolerantMode)

Устанавливает авторизацию URL на authority.

Авторизация URL — это комбинация информации о пользователе, имени хоста и порта. Все эти элементы необязательны; поэтому пустая авторизация является допустимой.

Информация о пользователе и хост разделены символом '@', а хост и порт разделены двоеточием. Если информация о пользователе пустая, символ '@' должен быть опущен; хотя одиночный двоеточие допускается, если порт пустой.

Следующий пример показывает допустимую строку авторизации:

Данные поля authority интерпретируются в соответствии с mode: в StrictMode любые символы '%' должны быть после двух шестнадцатеричных символов, а некоторые символы (включая пробел) недопустимы в нераскодированном виде. В TolerantMode (по умолчанию) все символы принимаются в нераскодированном виде, и толерантный анализатор исправит одиночные символы '%', не за которыми следуют два шестнадцатеричных символа.

Эта функция не допускает значения mode QUrl::DecodedMode. Для установки полностью раскодированных данных, вызовите setUserName(), setPassword(), setHost() и setPort() индивидуально.

См. также authority(), setUserInfo(), setHost() и setPort().

void QUrl::setFragment(const QString &fragment, QUrl::ParsingMode mode = TolerantMode)

Устанавливает фрагмент URL на fragment. Фрагмент — это последняя часть URL, представленная символом '#' за которым следует строка символов. Обычно используется в HTTP для указания определённой ссылки или точки на странице:

Фрагмент также иногда называется «ссылкой» URL.

Передача аргумента QString() (пустого QString) приведет к удалению фрагмента. Передача аргумента QString("") (пустой, но не пустой QString) установит фрагмент в пустую строку (как если бы исходный URL имел только символ "#").

Данные fragment интерпретируются в соответствии с mode: в StrictMode любые символы '%' должны следовать за двумя шестнадцатеричными символами, а некоторые символы (включая пробел) недопустимы в нераскодированном виде. В TolerantMode все символы принимаются в нераскодированном виде, и толерантный анализатор исправит одиночные символы '%' без последующих двух шестнадцатеричных символов. В DecodedMode символ '%' отображается как сам по себе, и кодированные символы невозможны.

QUrl::DecodedMode следует использовать при установке фрагмента из источника данных, который не является URL, или с фрагментом, полученным с помощью вызова fragment() с параметром форматирования QUrl::FullyDecoded.

См. также fragment() и hasFragment().

void QUrl::setHost(const QString &host, QUrl::ParsingMode mode = DecodedMode)

Устанавливает хост URL на host. Хост является частью поля authority.

Данные host интерпретируются в соответствии с mode: в StrictMode любые символы '%' должны быть после двух шестнадцатеричных символов, а некоторые символы (включая пробел) недопустимы в нераскодированном виде. В TolerantMode все символы принимаются в нераскодированном виде, и толерантный анализатор исправит одиночные символы '%' без последующих двух шестнадцатеричных символов. В DecodedMode символ '%' отображается как сам по себе, и кодированные символы невозможны.

Обратите внимание, что во всех случаях результатом анализа должна быть корректное имя хоста в соответствии с правилами STD 3, изменёнными спецификацией Международных идентификаторов ресурсов (RFC 3987). Некорректные имена хостов недопустимы и приведут к тому, что isValid() станет ложным.

См. также host() и setAuthority().

[static] void QUrl::setIdnWhitelist(const QStringList &list)

Устанавливает белый список доменов верхнего уровня (TLD), которые могут иметь не-ASCII символы в доменах, в значение list.

Обратите внимание, что если вы вызываете эту функцию, вам необходимо сделать это до запуска потоков, которые могут получить доступ к idnWhitelist().

Qt поставляется с предопределенным списком, который содержит домены верхнего уровня интернета, которые поддерживают международные доменные имена (IDN) и правила, гарантирующие, что обман не может произойти между похожими символами (такими как латинская строчная буква 'a' и её кириллический эквивалент, которые в большинстве шрифтов визуально идентичны).

Этот список регулярно обновляется по мере публикации новых правил регистраторами.

Эта функция предназначена для тех, кому нужно изменить список, чтобы добавить или удалить TLD. Не рекомендуется изменять его значение для целей, помимо тестирования, так как это может подвергнуть пользователей риску безопасности.

Эта функция была добавлена в Qt 4.2.

См. также idnWhitelist().

void QUrl::setPassword(const QString &password, QUrl::ParsingMode mode = DecodedMode)

Устанавливает пароль URL на password. password является частью элемента user info в authority URL, как описано в setUserInfo().

Данные password интерпретируются в соответствии с mode: в StrictMode любые символы '%' должны следовать за двумя шестнадцатеричными символами, а некоторые символы (включая пробел) недопустимы в нераскодированном виде. В TolerantMode все символы принимаются в нераскодированном виде, и толерантный анализатор исправит одиночные символы '%' без последующих двух шестнадцатеричных символов. В DecodedMode символ '%' отображается как сам по себе, и кодированные символы невозможны.

QUrl::DecodedMode следует использовать при установке пароля из источника данных, который не является URL, например, диалога ввода пароля, показанного пользователю или с паролем, полученным с помощью вызова password() с параметром форматирования QUrl::FullyDecoded.

См. также password() и setUserInfo().

void QUrl::setPath(const QString &path, QUrl::ParsingMode mode = DecodedMode)

Устанавливает путь URL на path. Путь — это часть URL, которая следует за authority, но предшествует строке запроса.

Для схем без иерархии, путь будет содержать всё, что следует за объявлением схемы, как в следующем примере:

Данные path интерпретируются в соответствии с mode: в StrictMode любые символы '%' должны быть после двух шестнадцатеричных символов, а некоторые символы (включая пробел) недопустимы в нераскодированном виде. В TolerantMode все символы принимаются в нераскодированном виде, и толерантный анализатор исправит одиночные символы '%' без последующих двух шестнадцатеричных символов. В DecodedMode символ '%' отображается как сам по себе, и кодированные символы невозможны.

QUrl::DecodedMode следует использовать при установке пути из источника данных, который не является URL, например, диалога, показанного пользователю, или с путем, полученным с помощью вызова path() с параметром форматирования QUrl::FullyDecoded.

См. также path().

void QUrl::setPort(int port)

Устанавливает порт URL на port. Порт является частью authority URL, как описано в setAuthority().

port должен быть в диапазоне от 0 до 65535 включительно. Установка порта в -1 указывает, что порт не указан.

См. также port().

void QUrl::setQuery(const QString &query, QUrl::ParsingMode mode = TolerantMode)

Устанавливает строку запроса URL на query.

Эта функция полезна, если вам необходимо передать строку запроса, которая не соответствует шаблону ключ-значение или использует другой способ кодирования специальных символов, нежели предлагаемый QUrl.

Передача значения QString() в query (пустой QString) полностью удаляет строку запроса. Однако, передача значения QString("") установит строку запроса в пустое значение, как если бы в исходном URL был только символ "?".

Строки запросов часто содержат проценты, поэтому не рекомендуется использовать DecodedMode. Один из специальных последовательностей, о которых нужно помнить — это символ «плюс» (+). QUrl не преобразует пробелы в символы «плюс», хотя веб-браузеры отправляют HTML-формы с таким преобразованием. Чтобы представить символ «плюс» в строке запроса, обычно используется последовательность "%2B". Эта функция оставляет последовательности "%2B" неизменными в TolerantMode или StrictMode.

См. также query() и hasQuery().

void QUrl::setQuery(const QUrlQuery &query)

Это перегруженная функция.

Устанавливает строку запроса URL на query.

Эта функция восстанавливает строку запроса из объекта QUrlQuery и устанавливает её на объект QUrl. Эта функция не имеет параметров анализа, потому что QUrlQuery содержит уже проанализированные данные.

Эта функция была добавлена в Qt 5.0.

См. также query() и hasQuery().

void QUrl::setScheme(const QString &scheme)

Устанавливает схему URL на scheme. Поскольку схема может содержать только символы ASCII, преобразование или декодирование входных данных не производится. Кроме того, она должна начинаться с буквы ASCII.

Схема описывает тип (или протокол) URL. Она представлена одной или несколькими символами ASCII в начале URL.

Схема строго соответствует RFC 3986: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

Следующий пример показывает URL, где схема — "ftp":

Для установки схемы используется следующий вызов:

    QUrl url;
    url.setScheme("ftp");

Схема также может быть пустой, в этом случае URL интерпретируется как относительный.

См. также scheme() и isRelative().

void QUrl::setUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode)

Парсит url и устанавливает это значение в объект. QUrl автоматически кодирует процентами все символы, которые не допускаются в URL, и декодирует последовательности, закодированные процентами, которые представляют собой незарезервированный символ (буквы, цифры, дефисы, подчёркивания, точки и тильды). Все остальные символы остаются в их исходной форме.

Парсит url с помощью режима парсинга parsingMode. В режиме TolerantMode (по умолчанию) QUrl исправит некоторые ошибки, в частности, наличие символа процента ('%') без двух шестнадцатеричных цифр, и примет любой символ в любом положении. В режиме StrictMode ошибки кодирования не допускаются, и QUrl также проверяет, что определённые запрещённые символы отсутствуют в некодированном виде. Если в StrictMode обнаружена ошибка, isValid() вернёт false. Режим парсинга DecodedMode в этом контексте недопустим и вызовет предупреждение во время выполнения.

См. также url() и toString().

void QUrl::setUserInfo(const QString &userInfo, QUrl::ParsingMode mode = TolerantMode)

Устанавливает информацию о пользователе URL на userInfo. Информация о пользователе — это необязательная часть авторизации URL, как описано в setAuthority().

Информация о пользователе состоит из имени пользователя и, необязательно, пароля, разделённых двоеточием. Если пароль пустой, двоеточие опускается. Следующий пример показывает допустимую строку информации о пользователе:

Данные userInfo интерпретируются в соответствии с mode: в StrictMode любые символы '%' должны быть следом за двумя шестнадцатеричными символами, и некоторые символы (включая пробел) не допускаются в некодированном виде. В режиме TolerantMode (по умолчанию) все символы принимаются в некодированном виде, и толерантный парсер исправит ошибки с '%', за которым не следуют две шестнадцатеричные цифры.

Эта функция не позволяет использовать mode QUrl::DecodedMode. Для установки полностью декодированных данных вызовите setUserName() и setPassword() по отдельности.

См. также userInfo(), setUserName(), setPassword() и setAuthority().

void QUrl::setUserName(const QString &userName, QUrl::ParsingMode mode = DecodedMode)

Устанавливает имя пользователя URL на userName. userName — часть элемента информации о пользователе в авторизации URL, как описано в setUserInfo().

Данные userName интерпретируются в соответствии с mode: в StrictMode любые символы '%' должны быть следом за двумя шестнадцатеричными символами, и некоторые символы (включая пробел) не допускаются в некодированном виде. В TolerantMode (по умолчанию) все символы принимаются в некодированном виде, и толерантный парсер исправит ошибки с '%', за которым не следуют две шестнадцатеричные цифры. В режиме DecodedMode '%' рассматривается как обычный символ, и кодирование символов недопустимо.

Следует использовать QUrl::DecodedMode, когда имя пользователя устанавливается из источника данных, который не является URL, например, из диалога пароля, отображаемого пользователю, или когда имя пользователя получено вызовом userName() с опцией форматирования QUrl::FullyDecoded.

См. также userName() и setUserInfo().

void QUrl::swap(QUrl &other)

Меняет местами URL other с текущим URL. Эта операция очень быстрая и никогда не терпит неудачи.

Эта функция была добавлена в Qt 4.8.

[static] QByteArray QUrl::toAce(const QString &domain)

Возвращает ASCII-совместимое кодирование данного доменного имени domain. Результат этой функции считается эквивалентным domain.

ASCII-совместимое кодирование (ACE) определяется RFC 3490, RFC 3491 и RFC 3492. Оно является частью спецификации IDNA (Internationalizing Domain Names in Applications), которая позволяет доменным именам (например, "example.com") записываться с использованием международных символов.

Функция возвращает пустой QByteArray, если domain не является допустимым именем хоста. Обратите внимание, что IPv6-литералы не являются допустимыми доменными именами.

Эта функция была добавлена в Qt 4.2.

CFURLRef QUrl::toCFURL() const

Создаёт CFURL из QUrl. Вызывающая сторона владеет CFURL и отвечает за его освобождение.

Эта функция была добавлена в Qt 5.2.

QString QUrl::toDisplayString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const

Возвращает строку, предназначенную для отображения URL. Вывод можно настроить, передав флаги с options. Опция RemovePassword всегда включена, так как пароли никогда не должны показываться пользователю.

С опциями по умолчанию полученная QString может быть передана обратно в QUrl позднее, но любой присутствовавший изначально пароль будет потерян.

Эта функция была добавлена в Qt 5.0.

См. также FormattingOptions, toEncoded() и toString().

QByteArray QUrl::toEncoded(QUrl::FormattingOptions options = FullyEncoded) const

Возвращает закодированное представление URL, если оно допустимо; в противном случае возвращается пустой QByteArray. Вывод можно настроить, передав флаги с options.

Информация о пользователе, путь и фрагмент преобразуются в UTF-8, а все символы, не являющиеся ASCII, кодируются процентами. Имя хоста кодируется с помощью Punycode.

QString QUrl::toLocalFile() const

Возвращает путь этого URL, отформатированный как путь к локальному файлу. Возвращаемый путь будет использовать косые черты, даже если он был изначально создан из пути с обратными косыми чертами.

Если этот URL содержит непустое имя хоста, оно будет закодировано в возвращаемом значении в виде, используемом в SMB-сетях (например, "//servername/path/to/file.txt").

    qDebug() << QUrl("file:file.txt").toLocalFile();            // "file:file.txt"
    qDebug() << QUrl("file:/home/user/file.txt").toLocalFile(); // "file:///home/user/file.txt"
    qDebug() << QUrl("file.txt").toLocalFile();                 // ""; wasn't a local file as it had no scheme

Примечание: если компонент пути этого URL содержит не-UTF-8 двоичную последовательность (такую как %80), поведение этой функции не определено.

См. также fromLocalFile() и isLocalFile().

NSURL *QUrl::toNSURL() const

Создаёт NSURL из QUrl. NSURL автоматизировано освобождается.

Эта функция была добавлена в Qt 5.2.

[static] QByteArray QUrl::toPercentEncoding(const QString &input, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray())

Возвращает закодированную копию input. Сначала input преобразуется в UTF-8, а все символы ASCII, которые не входят в группу незарезервированных символов, кодируются процентами. Чтобы предотвратить кодирование процентов для некоторых символов, передайте их в exclude. Чтобы принудительно закодировать символы процентами, передайте их в include.

Незарезервированный символ определяется как: ALPHA / DIGIT / "-" / "." / "_" / "~"

QByteArray ba = QUrl::toPercentEncoding("{a fishy string?}", "{}", "s");
qDebug(ba.constData());
// prints "{a fi%73hy %73tring%3F}"

QString QUrl::toString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const

Возвращает строковое представление URL. Вывод можно настроить, передав флаги с options. Опция QUrl::FullyDecoded не разрешена в этой функции, так как она создаст неоднозначные данные.

По умолчанию используется опция форматирования PrettyDecoded.

См. также FormattingOptions, url() и setUrl().

[static] QStringList QUrl::toStringList(const QList<QUrl> &urls, QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded))

Преобразует список urls в список объектов QString, используя toString(options).

Эта функция была добавлена в Qt 5.1.

QString QUrl::topLevelDomain(QUrl::ComponentFormattingOptions options = FullyDecoded) const

Возвращает домен верхнего уровня (TLD) URL (например, .co.uk, .net). Обратите внимание, что возвращаемое значение имеет префикс '.' , если URL содержит действительный TLD, в противном случае функция возвращает пустую строку.

Обратите внимание, что эта функция рассматривает TLD как любой домен, позволяющий пользователям регистрировать поддомены, включая многие домашние, динамические DNS-сайты и блог-хостинги. Это полезно для определения того, принадлежат ли два сайта одной инфраструктуре и разрешено ли общение, например, куки браузера: два домена должны рассматриваться как часть одного сайта, если они разделяют хотя бы один фрагмент, кроме значения, возвращаемого этой функцией.

  • foo.co.uk и foo.com не разделяют домен верхнего уровня
  • foo.co.uk и bar.co.uk разделяют домен .co.uk, но следующий фрагмент отличается
  • www.foo.co.uk и ftp.foo.co.uk разделяют домен верхнего уровня и еще один фрагмент, поэтому они считаются частью одного сайта

Если options включает EncodeUnicode, возвращаемая строка будет в ASCII-совместимом кодировании.

Эта функция была добавлена в Qt 4.8.

QString QUrl::url(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const

Возвращает строковое представление URL. Вывод можно настроить, передав флаги в options. Опция QUrl::FullyDecoded запрещена в этой функции, так как она генерирует неоднозначные данные.

Полученный QString можно позже передать в QUrl.

Синоним для toString(options).

См. также setUrl(), FormattingOptions, toEncoded(), и toString().

QString QUrl::userInfo(QUrl::ComponentFormattingOptions options = PrettyDecoded) const

Возвращает информацию о пользователе URL или пустую строку, если информация о пользователе не определена.

Функция возвращает однозначное значение, которое может содержать символы, которые всё ещё закодированы в процентах, а также некоторые управляющие последовательности, не представимые в декодированном виде в QString.

Аргумент options управляет тем, как форматировать компонент информации о пользователе. Значение QUrl::FullyDecoded запрещено в этой функции. Если вам нужно получить полностью декодированные данные, вызовите userName() и password() индивидуально.

См. также setUserInfo(), userName(), password(), и authority().

QString QUrl::userName(QUrl::ComponentFormattingOptions options = FullyDecoded) const

Возвращает имя пользователя URL, если оно определено; в противном случае возвращается пустая строка.

Аргумент options управляет тем, как форматировать компонент имени пользователя. Все значения производят однозначный результат. При QUrl::FullyDecoded все последовательности, закодированные в процентах, декодируются; в противном случае возвращаемое значение может содержать некоторые последовательности, закодированные в процентах, для некоторых управляющих последовательностей, не представимых в декодированном виде в QString.

Обратите внимание, что QUrl::FullyDecoded может привести к потере данных, если присутствуют непредставимые последовательности. Рекомендуется использовать это значение, когда результат будет использован в контексте, не связанном с URL, например, при установке в QAuthenticator или при согласовании входа.

См. также setUserName() и userInfo().

bool QUrl::operator!=(const QUrl &url) const

Возвращает true, если этот URL и заданный url не равны; в противном случае возвращает false.

bool QUrl::operator==(const QUrl &url) const

Возвращает true, если этот URL и заданный url равны; в противном случае возвращает false.

Связанные нечлены

QDataStream &QUrl::operator<<(QDataStream &out, const QUrl &url)

Записывает url url в поток out и возвращает ссылку на поток.

См. также Формат операторов QDataStream.

QDataStream &QUrl::operator>>(QDataStream &in, QUrl &url)

Считывает url в url из потока in и возвращает ссылку на поток.

См. также Формат операторов QDataStream.

Документация макросов

QUrl::QT_NO_URL_CAST_FROM_STRING

Отключает автоматическое преобразование из QString (или char *) в QUrl.

Компиляция кода с этим определением полезна, когда у вас много кода, использующего QString для имён файлов, и вы хотите преобразовать его для использования QUrl для сетевой прозрачности. В любом коде, использующем QUrl, это может помочь избежать пропущенных вызовов QUrl::resolved() и других неправильных использования преобразований QString в QUrl.

Например, если у вас есть код, подобный

url = filename; // probably not what you want

вы можете переписать его как

url = QUrl::fromLocalFile(filename);
url = baseurl.resolved(QUrl(filename));

См. также QT_NO_CAST_FROM_ASCII.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qurl.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API