Класс 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(const QUrl &other) | |
| QUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode) | |
| QUrl(QUrl &&other) | |
| ~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 |
| QUrl & | operator=(const QUrl &url) |
| QUrl & | operator=(const QString &url) |
| QUrl & | operator=(QUrl &&other) |
| bool | operator==(const QUrl &url) const |
Static Public Members
| 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 |
Подробное описание
Класс QUrl предоставляет удобный интерфейс для работы с URL-адресами.
Он может анализировать и создавать 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, строчная буква е с острым ударением). |
QUrl::EncodeDelimiters |
0x400000 | 0x800000 |
Определённые разделители остаются в закодированной форме, как они отображаются в URL при представлении полного URL в виде текста. Разделители зависят от компонента. Этот флаг не оказывает влияния на toString() или toEncoded(). |
QUrl::EncodeReserved |
0x1000000 |
Символы US-ASCII, запрещённые в URL спецификацией, остаются в закодированной форме. Это значение по умолчанию в toString() и toEncoded(). |
QUrl::DecodeReserved |
0x2000000 |
Декодируются символы US-ASCII, которые спецификация URL не допускает в 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 является псевдонимом для QFlags<ComponentFormattingOption>. Он хранит логическое ИЛИ сочетание значений ComponentFormattingOption.
См. также QUrl::FormattingOptions.
enum 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.
enum QUrl::UrlFormattingOptionflags 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 является typedef для QFlags<UrlFormattingOption>. Он хранит логическое ИЛИ сочетание значений UrlFormattingOption.
См. также QUrl::ComponentFormattingOptions.
enum QUrl::UserInputResolutionOptionflags QUrl::UserInputResolutionOptions
Параметры разрешения пользовательского ввода определяют, как fromUserInput() должен интерпретировать строки, которые могут быть как относительным путем, так и краткой формой HTTP-URL. Например, file.pl может быть как локальным файлом, так и URL http://file.pl.
| Константа | Значение | Описание |
|---|---|---|
QUrl::DefaultResolution |
0 |
По умолчанию механизм разрешения проверяет, существует ли локальный файл в рабочей директории, заданной для fromUserInput, и возвращает только локальный путь в этом случае. В противном случае предполагается URL. |
QUrl::AssumeLocalFile |
1 |
Этот параметр заставляет fromUserInput() всегда возвращать локальный путь, если входные данные не содержат схемы, например http://file.pl. Это полезно для приложений, таких как текстовые редакторы, которые могут создавать файл, если он не существует. |
Этот перечисление был введен или изменен в Qt 5.4.
Тип UserInputResolutionOptions является typedef для QFlags<UserInputResolutionOption>. Он хранит логическое ИЛИ сочетание значений UserInputResolutionOption.
См. также fromUserInput().
Документация по функциям-членам
QUrl::QUrl()
Создает пустой объект QUrl.
QUrl::QUrl(const QUrl &other)
Создает копию other.
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(QUrl &&other)
Перемещающая конструкция объекта QUrl, делающая его указывающим на тот же объект, на который указывал other.
Эта функция была введена в Qt 5.2.
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 Compatible Encoding (ACE). Результат этой функции считается эквивалентным domain.
Если значение в domain не может быть закодировано, оно будет преобразовано в QString и возвращено.
ASCII Compatible Encoding (ACE) определяется RFC 3490, RFC 3491 и RFC 3492. Это часть спецификации Internationalizing Domain Names in Applications (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-Compatible Encoding (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 имеют одинаковую схему и авторитет, и путь этого 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. Хост является частью авторизации.
Данные host интерпретируются в соответствии с mode: в StrictMode любые символы '%' должны следовать за двумя шестнадцатеричными символами, и некоторые символы (включая пробел) не допускаются в неизменённой форме. В TolerantMode все символы принимаются в неизменённой форме, а толерантный анализатор исправит одиночные символы '%' без двух шестнадцатеричных символов. В DecodedMode '%' интерпретируются как сами по себе, и кодированные символы невозможны.
Обратите внимание, что во всех случаях результат анализа должен быть допустимым именем хоста в соответствии со STD 3, с изменениями, внесёнными спецификацией интернационализированных ресурсов (RFC 3987). Недопустимые имена хоста запрещены и приведут к тому, что isValid() станет ложным.
См. также host() и setAuthority().
[static] void QUrl::setIdnWhitelist(const QStringList &list)
Устанавливает белый список доменных имён верхнего уровня (TLD), которые могут содержать не-ASCII символы в доменах, в значение list.
Обратите внимание, что если вы вызываете эту функцию, вам необходимо сделать это до запуска потоков, которые могут получить доступ к idnWhitelist().
Qt поставляется с предопределённым списком, который содержит домены верхнего уровня Интернета, которые поддерживают интернационализированные доменные имена (IDNs) и правила, гарантирующие, что мошенничества не произойдёт из-за визуально похожих символов (например, латинская строчная буква 'a' и её кириллический эквивалент, которые в большинстве шрифтов визуально идентичны).
Этот список периодически обновляется, поскольку регистраторы публикуют новые правила.
Эта функция предоставлена для тех, кому нужно манипулировать списком, чтобы добавить или удалить TLD. Не рекомендуется изменять его значение для целей, отличных от тестирования, так как это может создать риски для пользователей.
Эта функция была введена в Qt 4.2.
См. также idnWhitelist().
void QUrl::setPassword(const QString &password, QUrl::ParsingMode mode = DecodedMode)
Устанавливает пароль URL в password. password является частью элемента информации пользователя в авторизации 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, которая следует за авторизацией, но предшествует строке запроса.
Для схем без иерархии путь будет всем, что следует за объявлением схемы, как в следующем примере:
Данные path интерпретируются в соответствии с mode: в StrictMode любые символы '%' должны следовать за двумя шестнадцатеричными символами, и некоторые символы (включая пробел) не допускаются в неизменённой форме. В TolerantMode все символы принимаются в неизменённой форме, а толерантный анализатор исправит одиночные символы '%' без двух шестнадцатеричных символов. В DecodedMode '%' интерпретируются как сами по себе, и кодированные символы невозможны.
QUrl::DecodedMode следует использовать при установке пути из источника данных, который не является URL, например, из диалогового окна или с путём, полученным вызовом path() с опцией форматирования QUrl::FullyDecoded.
См. также path().
void QUrl::setPort(int port)
Устанавливает порт URL в port. Порт является частью авторизации 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 в данном контексте недопустим и вызовет предупреждение во время выполнения.
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::ComponentFormattingOption 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.
QUrl &QUrl::operator=(const QUrl &url)
Присваивает указанный url этому объекту.
QUrl &QUrl::operator=(const QString &url)
Присваивает указанный url этому объекту.
QUrl &QUrl::operator=(QUrl &&other)
Переносит other в этот экземпляр QUrl.
Эта функция была введена в Qt 5.2.
bool QUrl::operator==(const QUrl &url) const
Возвращает true, если этот URL и заданный url равны; в противном случае возвращает false.
Связанные нечлены
QDataStream &operator<<(QDataStream &out, const QUrl &url)
Записывает url url в поток out и возвращает ссылку на поток.
См. также Формат операторов QDataStream.
QDataStream &operator>>(QDataStream &in, QUrl &url)
Считывает url в url из потока in и возвращает ссылку на поток.
См. также Формат операторов QDataStream.
Документация по макросам
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.12/qurl.html