Класс QUrl
Класс QUrl предоставляет удобный интерфейс для работы с URL-адресами. Подробнее...
| Заголовок: | #include <QUrl> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются реентерабельными.
Типы
| перечисление | ComponentFormattingOption { PrettyDecoded, EncodeSpaces, EncodeUnicode, EncodeDelimiters, EncodeReserved, …, FullyDecoded } |
| флаги | ComponentFormattingOptions |
| флаги | FormattingOptions |
| перечисление | ParsingMode { TolerantMode, StrictMode, DecodedMode } |
| перечисление | UrlFormattingOption { None, RemoveScheme, RemovePassword, RemoveUserInfo, RemovePort, …, 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 | 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 (Uniform Resource Identifier: Generic Syntax) и включает расширения схем из RFC 1738 (Uniform Resource Locators). Правила преобразования регистра в QUrl соответствуют RFC 3491 (Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)). Он также совместим со спецификацией файла URI с freedesktop.org, при условии, что имена файлов в локале закодированы в UTF-8 (требуется IDN).
Относительные URL-адреса по сравнению с относительными путями
Вызов isRelative() вернёт значение true или false в зависимости от того, является ли URL-адрес относительным. Относительный URL-адрес не имеет scheme. Например:
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 — это typedef для QFlags<UrlFormattingOption>. Он хранит сочетание значений UrlFormattingOption через операцию OR.
См. также QUrl::ComponentFormattingOptions.
Перечисление 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 через операцию OR.
См. также 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 управляет тем, как форматировать компонент user info. Значение 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-совместимого кодирования (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 в этом контексте недопустим и вызовет предупреждение во время выполнения.
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.txt"
qDebug() << QUrl("file:/home/user/file.txt").toLocalFile(); // "/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::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 &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.15/qurl.html