Spec-Zone.ru › Qt 5.9

Класс QUrlQuery

Класс QUrlQuery предоставляет способ манипулирования парами ключ-значение в запросе URL. Подробнее...

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

Примечание: Все функции в этом классе являются перевходящими.

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

QUrlQuery()
QUrlQuery(const QUrl &url)
QUrlQuery(const QString &queryString)
QUrlQuery(const QUrlQuery &other)
~QUrlQuery()
void addQueryItem(const QString &key, const QString &value)
QStringList allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
void clear()
bool hasQueryItem(const QString &key) const
bool isEmpty() const
QString query(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
QString queryItemValue(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
QList<QPair<QString, QString> > queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
QChar queryPairDelimiter() const
QChar queryValueDelimiter() const
void removeAllQueryItems(const QString &key)
void removeQueryItem(const QString &key)
void setQuery(const QString &queryString)
void setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter)
void setQueryItems(const QList<QPair<QString, QString> > &query)
void swap(QUrlQuery &other)
QString toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
bool operator!=(const QUrlQuery &other) const
QUrlQuery & operator=(const QUrlQuery &other)
QUrlQuery & operator=(QUrlQuery &&other)
bool operator==(const QUrlQuery &other) const

Статические открытые члены

QChar defaultQueryPairDelimiter()
QChar defaultQueryValueDelimiter()

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

uint qHash(const QUrlQuery &key, uint seed = 0)

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

Класс QUrlQuery предоставляет способ манипулирования парами ключ-значение в запросе URL.

Он используется для разбора строк запроса, встречающихся в URL, например:

Строки запроса, подобные приведенной выше, используются для передачи параметров в URL и обычно декодируются в несколько пар ключ-значение. Приведенная выше строка содержала бы две записи в своем списке с ключами «type» и «color». QUrlQuery также может использоваться для создания строки запроса, подходящей для использования в QUrl::setQuery() из отдельных компонентов запроса.

Наиболее распространенным способом разбора строки запроса является ее инициализация в конструкторе путем передачи строки запроса. В противном случае для установки запроса для разбора может использоваться метод setQuery(). Этот метод также может использоваться для разбора запроса с нестандартными разделителями после их установки с помощью функции setQueryDelimiters().

Закодированная строка запроса может быть получена снова с помощью query(). Это будет брать все хранящиеся внутри элементы и кодировать строку с использованием разделителей.

Кодирование

Все методы-получатели в QUrlQuery поддерживают необязательный параметр типа QUrl::ComponentFormattingOptions, включая query(), которые определяют, как кодировать данные в вопросе. За исключением QUrl::FullyDecoded, возвращаемое значение по-прежнему должно рассматриваться как строка с процентами, поскольку существуют определенные значения, которые нельзя выразить в декодированной форме (например, управляющие символы, последовательности байтов, не поддающиеся декодированию в UTF-8). По этой причине символ процента всегда представляется строкой «%25».

Обработка пробелов и плюса («+»)

Веб-браузеры обычно кодируют пробелы, найденные в элементах HTML FORM, в знак плюса («+»), а знаки плюса — в их процентно-кодированную форму (%2B). Однако спецификации Интернета, регулирующие URL, не считают пробелы и знак плюса эквивалентными.

По этой причине QUrlQuery никогда не кодирует пробел в «+» и никогда не декодирует «+» в пробел. Вместо этого пробелы будут представлены «%20» в закодированном виде.

Для поддержки кодирования, подобного кодированию HTML-форм, QUrlQuery также никогда не декодирует последовательность «%2B» в знак плюса, а также не кодирует знак плюса. Фактически, любые последовательности «%2B» или «+», найденные в ключах, значениях или строке запроса, остаются точно такими, как написаны (за исключением преобразования верхнего регистра «%2b» в «%2B»).

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

При форматировании QUrl::FullyDecoded все процентно-кодированные последовательности будут полностью декодированы, а символ «%» будет использоваться для представления самого себя. QUrl::FullyDecoded следует использовать с осторожностью, так как это может привести к потере данных. См. документацию QUrl::FullyDecoded для получения информации о том, какие данные могут быть потеряны.

Этот режим форматирования следует использовать только при работе с текстом, представленным пользователю в контекстах, где процентное кодирование нежелательно. Обратите внимание, что установщики QUrlQuery и методы запроса не поддерживают соответствующий режим разбора QUrl::DecodedMode, поэтому использование QUrl::FullyDecoded для получения списка ключей может привести к тому, что ключи, отсутствующие в объекте, не будут найдены.

Нестандартные разделители

По умолчанию QUrlQuery использует знак равенства («=») для разделения ключа и его значения и амперсанд («&») для разделения пар ключ-значение друг от друга. Можно изменить разделители, которые использует QUrlQuery для разбора и для реконструирования запроса, вызвав setQueryDelimiters().

Нестандартные разделители следует выбирать среди тех, которые RFC 3986 называет «подразделителями». Они:

sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
              / "*" / "+" / "," / ";" / "="

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

См. также QUrl.

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

QUrlQuery::QUrlQuery()

Создаёт пустой объект QUrlQuery. Запрос можно задать позже, вызвав setQuery() или добавить элементы, используя addQueryItem().

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

QUrlQuery::QUrlQuery(const QUrl &url)

Создаёт объект QUrlQuery и парсит строку запроса, найденную в URL url, используя стандартные разделители запроса. Для парсинга строки запроса с другими разделителями, необходимо сначала установить их, используя setQueryDelimiters(), а затем установить запрос с помощью setQuery().

См. также QUrl::query().

QUrlQuery::QUrlQuery(const QString &queryString)

Создаёт объект QUrlQuery и парсит строку запроса queryString, используя стандартные разделители запроса. Для парсинга строки запроса с другими разделителями, необходимо сначала установить их, используя setQueryDelimiters(), а затем установить запрос с помощью setQuery().

QUrlQuery::QUrlQuery(const QUrlQuery &other)

Копирует содержимое объекта QUrlQuery other, включая разделители запроса.

QUrlQuery::~QUrlQuery()

Уничтожает объект QUrlQuery.

void QUrlQuery::addQueryItem(const QString &key, const QString &value)

Добавляет пару key = value в конец строки запроса URL. Этот метод не перезаписывает существующие элементы с тем же ключом.

Примечание: Этот метод не рассматривает пробелы (ASCII 0x20) и знаки плюса ("+") как одинаковые, как это делают HTML-формы. Если вам нужны пробелы, представленные как знаки плюса, используйте фактические знаки плюса.

См. также hasQueryItem() и queryItemValue().

QStringList QUrlQuery::allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const

Возвращает список значений строки запроса, ключ которых равен key из URL, используя опции кодирования, заданные в encoding. Если ключ key не найден, функция возвращает пустой список.

См. также queryItemValue() и addQueryItem().

void QUrlQuery::clear()

Очищает объект QUrlQuery, удаляя все пары ключ-значение, которые в нём хранятся. Если разделители запроса были изменены, эта функция сохранит их изменённые значения.

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

QChar QUrlQuery::defaultQueryPairDelimiter()

Возвращает стандартный символ для разделения пар ключ-значение друг от друга — амперсанд ("&").

См. также setQueryDelimiters(), queryPairDelimiter() и defaultQueryValueDelimiter().

QChar QUrlQuery::defaultQueryValueDelimiter()

Возвращает стандартный символ для разделения ключа и значения в запросе — знак равенства ("=").

См. также setQueryDelimiters(), queryValueDelimiter() и defaultQueryPairDelimiter().

bool QUrlQuery::hasQueryItem(const QString &key) const

Возвращает true, если в URL есть пара ключ-значение, ключ которой равен key.

См. также addQueryItem() и queryItemValue().

bool QUrlQuery::isEmpty() const

Возвращает true, если этот объект QUrlQuery не содержит пар ключ-значение, например, после создания по умолчанию или после парсинга пустой строки запроса.

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

QString QUrlQuery::query(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const

Возвращает воссозданную строку запроса, сформированную из пар ключ-значение, которые в данный момент хранятся в этом объекте QUrlQuery и разделенные разделителями запроса, выбранными для этого объекта. Ключи и значения закодированы с использованием опций, заданных параметром encoding.

В этой функции единственный неоднозначный разделитель — символ решётки ("#"), так как в URL он используется для разделения строки запроса от фрагмента, который может следовать за ней.

Порядок пар ключ-значение в возвращаемой строке точно такой же, как в исходном запросе.

См. также setQuery(), QUrl::setQuery(), QUrl::fragment() и Кодировка.

QString QUrlQuery::queryItemValue(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const

Возвращает значение запроса, связанное с ключом key из URL, используя опции кодирования, заданные в encoding. Если ключ key не найден, функция возвращает пустую строку. Если вам нужно отличить пустое значение от отсутствующего ключа, сначала проверьте наличие ключа с помощью hasQueryItem().

Если ключ key определён несколько раз, эта функция возвратит первое найденное значение, в порядке их появления в строке запроса или добавления с помощью addQueryItem().

См. также addQueryItem(), allQueryItemValues() и Кодировка.

QList<QPair<QString, QString> > QUrlQuery::queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const

Возвращает строку запроса URL в виде словаря ключей и значений, используя опции кодирования, заданные в encoding. Порядок элементов совпадает с порядком, в котором они были найдены в строке запроса или заданы с помощью setQueryItems().

См. также setQueryItems() и Кодировка.

QChar QUrlQuery::queryPairDelimiter() const

Возвращает символ, используемый для разделения пар ключ-значение при реконструировании строки запроса в query() или при парсинге в setQuery().

См. также setQueryDelimiters() и queryValueDelimiter().

QChar QUrlQuery::queryValueDelimiter() const

Возвращает символ, используемый для разделения ключа и значения при реконструировании строки запроса в query() или при парсинге в setQuery().

См. также setQueryDelimiters() и queryPairDelimiter().

void QUrlQuery::removeAllQueryItems(const QString &key)

Удаляет все пары строки запроса, ключ которых равен key из URL.

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

void QUrlQuery::removeQueryItem(const QString &key)

Удаляет пару строки запроса, ключ которой равен key из URL. Если есть несколько элементов с ключом, равным key, удаляется первый элемент в порядке их появления в строке запроса или добавления с помощью addQueryItem().

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

void QUrlQuery::setQuery(const QString &queryString)

Парсит строку запроса в queryString и устанавливает внутренние элементы в найденные значения. Если разделители были указаны с помощью setQueryDelimiters(), эта функция будет использовать их вместо стандартных разделителей для парсинга строки.

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

void QUrlQuery::setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter)

Устанавливает символы, используемые для разделителей между ключами и значениями, а также между парами ключ-значение в строке запроса URL. Значение по умолчанию для разделителя между значениями равно '=', а для разделителя между парами равно '&'.

valueDelimiter будет использоваться для разделения ключей и значений, а pairDelimiter — для разделения пар ключ-значение. Любые вхождения этих разделителей в закодированном представлении ключей и значений строки запроса будут проценту-кодированы при возвращении в query().

Если valueDelimiter установлено в '(' и pairDelimiter — в ')', строка запроса будет представлена следующим образом:

http://www.example.com/cgi-bin/drawgraph.cgi?type(pie)color(green)

Примечание: Нестандартные разделители следует выбирать из тех, что RFC 3986 называет «подразделителями». Это:

sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
              / "*" / "+" / "," / ";" / "="

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

См. также queryValueDelimiter() и queryPairDelimiter().

void QUrlQuery::setQueryItems(const QList<QPair<QString, QString> > &query)

Устанавливает элементы в этом объекте QUrlQuery в query. Порядок элементов в query сохраняется.

Примечание: Этот метод не рассматривает пробелы (ASCII 0x20) и знаки «плюс» («+») как одинаковые, как это делает HTML-форма. Если вам нужны пробелы, представленные как знаки «плюс», используйте фактические знаки «плюс».

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

void QUrlQuery::swap(QUrlQuery &other)

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

QString QUrlQuery::toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const

Возвращает этот объект QUrlQuery как QString. encoding может быть использован для указания кодирования строки URL возвращаемого значения.

bool QUrlQuery::operator!=(const QUrlQuery &other) const

Возвращает true если other не равно этому объекту QUrlQuery. В противном случае возвращает false.

См. также operator==().

QUrlQuery &QUrlQuery::operator=(const QUrlQuery &other)

Копирует содержимое объекта other QUrlQuery, включая разделители запроса.

QUrlQuery &QUrlQuery::operator=(QUrlQuery &&other)

Присваивает other этому экземпляру QUrlQuery.

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

bool QUrlQuery::operator==(const QUrlQuery &other) const

Возвращает true если этот объект и объект other содержат одинаковое содержимое в том же порядке и используют те же разделители запроса.

Связанные нечленные функции

uint qHash(const QUrlQuery &key, uint seed = 0)

Возвращает значение хэша для key, используя seed для инициализации вычисления.

Эта функция была представлена в Qt 5.6.

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

Spec-Zone.ru

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