Spec-Zone.ru › Qt 5.11

Класс 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 управляет тем, как форматировать компонент 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-совместимом кодировании (ACE). Результат этой функции считается эквивалентным domain.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры:

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

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

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

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

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

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

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

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

bool QUrl::hasFragment() const

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

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

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

bool QUrl::hasQuery() const

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

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

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

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

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

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

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

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

[static] QStringList QUrl::idnWhitelist()

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

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

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

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

bool QUrl::isEmpty() const

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

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

bool QUrl::isLocalFile() const

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

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

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

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

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

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

bool QUrl::isRelative() const

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

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

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

bool QUrl::isValid() const

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

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

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

    return true;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

QString QUrl::scheme() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Устанавливает хост URL в host. Хост является частью авторизации.

Данные 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 в данном контексте недопустим и вызовет предупреждение во время выполнения.

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

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

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

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

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

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

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

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

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

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

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

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

void QUrl::swap(QUrl &other)

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

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

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

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

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

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

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

CFURLRef QUrl::toCFURL() const

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

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

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

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

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

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

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

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

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

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

QString QUrl::toLocalFile() const

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

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

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

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

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

NSURL *QUrl::toNSURL() const

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

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

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

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

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

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

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

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

Флагом по умолчанию является PrettyDecoded.

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

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

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

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

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

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

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

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

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

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

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

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

Возвращаемый QString можно позже передать в QUrl.

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

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

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

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

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

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

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

QString QUrl::userName(QUrl::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/archives/qt-5.11/qurl.html

Spec-Zone.ru

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