QUrlQuery Class
La clase QUrlQuery proporciona una forma de manipular un par clave-valor en la consulta de una URL. Más...
| Cabecera: | #include <QUrlQuery> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Lista de todos los miembros, incluyendo los heredados
- QUrlQuery es parte de Entrada/Salida y Redes, API de Programación de Redes y Clases Implícitamente Compartidas.
Esta clase es igual-comparable.
Nota: Todas las funciones de esta clase son reentrantes.
Funciones Públicas
| QUrlQuery() | |
| QUrlQuery(const QString &queryString) | |
| QUrlQuery(const QUrl &url) | |
| QUrlQuery(std::initializer_list<std::pair<QString, QString>> list) | |
| QUrlQuery(const QUrlQuery &other) | |
(since 6.5) | QUrlQuery(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<std::pair<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<std::pair<QString, QString>> &query) |
| void | swap(QUrlQuery &other) |
| QString | toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const |
| QUrlQuery & | operator=(QUrlQuery &&other) |
| QUrlQuery & | operator=(const QUrlQuery &other) |
Miembros Públicos Estáticos
| char16_t | defaultQueryPairDelimiter() |
| char16_t | defaultQueryValueDelimiter() |
No miembros relacionados
| size_t | qHash(const QUrlQuery &key, size_t seed = 0) |
| bool | operator!=(const QUrlQuery &lhs, const QUrlQuery &rhs) |
| bool | operator==(const QUrlQuery &lhs, const QUrlQuery &rhs) |
Descripción detallada
Se utiliza para analizar las cadenas de consulta que se encuentran en URL como la siguiente:

Las cadenas de consulta como la anterior se utilizan para transmitir opciones en la URL y normalmente se decodifican en múltiples pares clave-valor. La de arriba contendría dos entradas en su lista, con las claves "type" y "color". QUrlQuery también puede utilizarse para crear una cadena de consulta adecuada para su uso en QUrl::setQuery() a partir de los componentes individuales de la consulta.
La forma más común de analizar una cadena de consulta es inicializarla en el constructor pasándole la cadena de consulta. De lo contrario, se puede utilizar el método setQuery() para establecer la consulta que se va a analizar. Este método también puede utilizarse para analizar una consulta con delimitadores no estándar, después de haberlos establecido mediante la función setQueryDelimiters().
La cadena de consulta codificada puede obtenerse de nuevo utilizando query(). Esta función tomará todos los elementos almacenados internamente y codificará la cadena utilizando los delimitadores.
Codificación
Todos los métodos getter de QUrlQuery admiten un parámetro opcional de tipo QUrl::ComponentFormattingOptions, incluido query(), que dicta cómo codificar los datos en cuestión. Excepto en el caso de QUrl::FullyDecoded, el valor devuelto debe seguir considerándose una cadena codificada en porcentaje, ya que hay ciertos valores que no pueden expresarse de forma descodificada (como los caracteres de control o las secuencias de bytes no descodificables en UTF-8). Por este motivo, el carácter de porcentaje siempre se representa mediante la cadena "%25".
Todos los métodos setter y los métodos de consulta como hasQueryItem() en QUrlQuery sólo toman formas codificadas. A diferencia de QUrl, no existe un parámetro opcional para especificar que las cadenas que se pasan están descodificadas. Si se pasan cadenas codificadas incorrectamente a los métodos setter o query, QUrlQuery intentará recuperarse en lugar de fallar. Es decir, todas las funciones de esta clase analizan sus argumentos de cadena como si se hubiera especificado el modo de descodificación QUrl::TolerantMode.
El código de la aplicación debe esforzarse por asegurar siempre una codificación adecuada y no confiar en que el análisis TolerantMode arregle las cadenas. En particular, todas las entradas de usuario deben codificarse primero en porcentaje utilizando QUrl::toPercentEncoding() o funciones similares antes de pasarlas a las funciones de esta clase.
Tratamiento de los espacios y el signo más ("+")
Los navegadores web suelen codificar los espacios que aparecen en los elementos HTML FORM con un signo más ("+") y los signos más con su forma codificada porcentualmente (%2B). Sin embargo, las especificaciones de Internet que rigen las URL no consideran equivalentes los espacios y el signo más.
Por ese motivo, QUrlQuery nunca codifica el carácter de espacio a "+" y nunca descodificará "+" a un carácter de espacio. En su lugar, los caracteres de espacio se representarán como "%20" en forma codificada.
Para soportar una codificación como la de los formularios HTML, QUrlQuery tampoco descodifica nunca la secuencia "%2B" a un signo más ni codifica un signo más. De hecho, cualquier secuencia "%2B" o "+" que se encuentre en las claves, valores o cadena de consulta se deja exactamente como está escrita (excepto el cambio de mayúsculas de "%2b" a "%2B").
Descodificación completa
Con el formato QUrl::FullyDecoded, todas las secuencias codificadas en porcentaje se descodificarán completamente y se utilizará el carácter "%" para representarse a sí mismo. QUrl::FullyDecoded debe utilizarse con cuidado, ya que puede provocar la pérdida de datos. Consulte la documentación de QUrl::FullyDecoded para obtener información sobre los datos que pueden perderse.
Este modo de formato sólo debe utilizarse cuando se trate de texto presentado al usuario en contextos en los que no se desee la codificación porcentual. Tenga en cuenta que los setters y métodos de consulta QUrlQuery no soportan el análisis sintáctico homólogo QUrl::DecodedMode, por lo que utilizar QUrl::FullyDecoded para obtener un listado de claves puede dar como resultado claves no encontradas en el objeto.
Delimitadores no estándar
Por defecto, QUrlQuery utiliza un signo igual ("=") para separar una clave de su valor, y un ampersand ("&") para separar pares clave-valor entre sí. Es posible cambiar los delimitadores que QUrlQuery utiliza para analizar y reconstruir la consulta llamando a setQueryDelimiters().
Los delimitadores no estándar deben elegirse entre lo que RFC 3986 denomina "subdelimitadores". Estos son:
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
El uso de otros caracteres no está soportado y puede dar lugar a comportamientos inesperados. QUrlQuery no verifica que se haya pasado un delimitador válido.
Véase también QUrl.
Documentación de las funciones miembro
QUrlQuery::QUrlQuery()
Construye un objeto QUrlQuery vacío. Se puede establecer una consulta posteriormente llamando a setQuery() o se pueden añadir elementos utilizando addQueryItem().
Véase también setQuery() y addQueryItem().
[explicit] QUrlQuery::QUrlQuery(const QString &queryString)
Construye un objeto QUrlQuery y analiza la cadena de consulta queryString, utilizando los delimitadores de consulta predeterminados. Para analizar una cadena de consulta utilizando otros delimitadores, primero debe establecerlos utilizando setQueryDelimiters() y luego establecer la consulta con setQuery().
[explicit] QUrlQuery::QUrlQuery(const QUrl &url)
Construye un objeto QUrlQuery y analiza la cadena de consulta que se encuentra en la URL url, utilizando los delimitadores de consulta predeterminados. Para analizar una cadena de consulta utilizando otros delimitadores, primero debe definirlos con setQueryDelimiters() y luego definir la consulta con setQuery().
Véase también QUrl::query().
QUrlQuery::QUrlQuery(std::initializer_list<std::pair<QString, QString>> list)
Construye un objeto QUrlQuery a partir del par clave/valor list.
QUrlQuery::QUrlQuery(const QUrlQuery &other)
Copia el contenido del objeto other QUrlQuery, incluidos los delimitadores de la consulta.
[noexcept, since 6.5] QUrlQuery::QUrlQuery(QUrlQuery &&other)
Mueve el contenido del objeto other QUrlQuery, incluyendo los delimitadores de la consulta.
Esta función se introdujo en Qt 6.5.
[noexcept] QUrlQuery::~QUrlQuery()
Destruye este objeto QUrlQuery.
void QUrlQuery::addQueryItem(const QString &key, const QString &value)
Añade el par key = value al final de la cadena de consulta de la URL. Este método no sobrescribe los elementos existentes que puedan existir con la misma clave.
Nota: Este método no trata los espacios (ASCII 0x20) y los signos más ("+") como lo hacen los formularios HTML. Si necesita que los espacios se representen como signos más, utilice signos más reales.
Nota: Se espera que las cadenas de clave y valor estén codificadas en porcentaje.
Véase también hasQueryItem() y queryItemValue().
QStringList QUrlQuery::allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
Devuelve la lista de valores de cadena de consulta cuya clave es igual a key de la URL, utilizando las opciones especificadas en encoding para codificar el valor devuelto. Si no se encuentra la clave key, esta función devuelve una lista vacía.
Nota: Se espera que la clave esté codificada en porcentaje.
Véase también queryItemValue() y addQueryItem().
void QUrlQuery::clear()
Borra este objeto QUrlQuery eliminando todos los pares clave-valor almacenados actualmente. Si se han modificado los delimitadores de la consulta, esta función los dejará con sus valores modificados.
Véase también isEmpty() y setQueryDelimiters().
[static constexpr noexcept] char16_t QUrlQuery::defaultQueryPairDelimiter()
Devuelve el carácter por defecto para separar pares clave-valor entre sí, un ampersand ("&").
Nota: Antes de Qt 6, esta función devolvía QChar.
Véase también setQueryDelimiters(), queryPairDelimiter(), y defaultQueryValueDelimiter().
[static constexpr noexcept] char16_t QUrlQuery::defaultQueryValueDelimiter()
Devuelve el carácter por defecto para separar claves de valores en la consulta, un signo igual ("=").
Nota: Antes de Qt 6, esta función devolvía QChar.
Véase también setQueryDelimiters(), queryValueDelimiter(), y defaultQueryPairDelimiter().
bool QUrlQuery::hasQueryItem(const QString &key) const
Devuelve true si hay un par de cadenas de consulta cuya clave es igual a key de la URL.
Nota: Se espera que la clave esté codificada en porcentaje.
Véase también addQueryItem() y queryItemValue().
bool QUrlQuery::isEmpty() const
Devuelve true si este objeto QUrlQuery no contiene pares clave-valor, como después de haber sido construido por defecto o después de analizar una cadena de consulta vacía.
Véase también setQuery() y clear().
QString QUrlQuery::query(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
Devuelve la cadena de consulta reconstruida, formada a partir de los pares clave-valor almacenados actualmente en este objeto QUrlQuery y separados por los delimitadores de consulta elegidos para este objeto. Las claves y los valores se codifican utilizando las opciones dadas por el parámetro encoding.
Para esta función, el único delimitador ambiguo es la almohadilla ("#"), ya que en las URL se utiliza para separar la cadena de consulta del fragmento que puede ir a continuación.
El orden de los pares clave-valor en la cadena devuelta es exactamente el mismo que en la consulta original.
Véase también setQuery(), QUrl::setQuery(), QUrl::fragment(), y Codificación.
QString QUrlQuery::queryItemValue(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
Devuelve el valor de consulta asociado a la clave key de la URL, utilizando las opciones especificadas en encoding para codificar el valor devuelto. Si no se encuentra la clave key, esta función devuelve una cadena vacía. Si necesita distinguir entre un valor vacío y una clave inexistente, debe comprobar primero la presencia de la clave utilizando hasQueryItem().
Si la clave key está definida de forma múltiple, esta función devolverá la primera que se encuentre, en el orden en que estaban presentes en la cadena de consulta o se añadieron utilizando addQueryItem().
Nota: Se espera que la clave esté codificada en porcentaje.
Véase también addQueryItem(), allQueryItemValues() y Codificación.
QList<std::pair<QString, QString>> QUrlQuery::queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
Devuelve la cadena de consulta de la URL, como un mapa de claves y valores, utilizando las opciones especificadas en encoding para codificar los elementos. El orden de los elementos es el mismo que el que se encuentra en la cadena de consulta o el establecido con setQueryItems().
Véase también setQueryItems() y Codificación.
QChar QUrlQuery::queryPairDelimiter() const
Devuelve el carácter utilizado para delimitar entre pares clave-valor al reconstruir la cadena de consulta en query() o al analizarla en setQuery().
Véase también setQueryDelimiters() y queryValueDelimiter().
QChar QUrlQuery::queryValueDelimiter() const
Devuelve el carácter utilizado para delimitar entre claves y valores al reconstruir la cadena de consulta en query() o al analizarla en setQuery().
Véase también setQueryDelimiters() y queryPairDelimiter().
void QUrlQuery::removeAllQueryItems(const QString &key)
Elimina de la URL todos los pares de cadenas de consulta cuya clave sea igual a key.
Nota: Se espera que la clave esté codificada en porcentaje.
Véase también removeQueryItem().
void QUrlQuery::removeQueryItem(const QString &key)
Elimina de la URL el par de cadenas de consulta cuya clave es igual a key. Si hay varios elementos con una clave igual a key, elimina el primer elemento en el orden en que estaban presentes en la cadena de consulta o se añadieron con addQueryItem().
Nota: Se espera que la clave esté codificada en porcentaje.
Véase también removeAllQueryItems().
void QUrlQuery::setQuery(const QString &queryString)
Analiza la cadena de consulta en queryString y establece los elementos internos a los valores encontrados allí. Si se han especificado delimitadores con setQueryDelimiters(), esta función los utilizará en lugar de los delimitadores predeterminados para analizar la cadena.
Véase también query().
void QUrlQuery::setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter)
Establece los caracteres utilizados para delimitar entre claves y valores, y entre pares clave-valor en la cadena de consulta de la URL. El delimitador de valores por defecto es '=' y el delimitador de pares por defecto es '&'.

valueDelimiter se utilizará para separar claves de valores, y pairDelimiter se utilizará para separar pares clave-valor. Cualquier aparición de estos caracteres delimitadores en la representación codificada de las claves y los valores de la cadena de consulta se codifica en porcentaje cuando se devuelve en query().
Si valueDelimiter está configurado como ',' y pairDelimiter como ';', la cadena de consulta anterior se representaría así:
http://www.example.com/cgi-bin/drawgraph.cgi?type,pie;color,greenNota: Los delimitadores no estándar deben elegirse entre lo que RFC 3986 denomina "subdelimitadores". Estos son:
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
El uso de otros caracteres no está soportado y puede resultar en un comportamiento inesperado. Este método no verifica que se haya pasado un delimitador válido.
Véase también queryValueDelimiter() y queryPairDelimiter().
void QUrlQuery::setQueryItems(const QList<std::pair<QString, QString>> &query)
Establece los elementos de este objeto QUrlQuery en query. Se conserva el orden de los elementos en query.
Nota: Este método no trata los espacios (ASCII 0x20) y los signos más ("+") como lo hacen los formularios HTML. Si necesita que los espacios se representen como signos más, utilice signos más reales.
Nota: Se espera que las claves y los valores estén codificados en porcentaje.
Véase también queryItems() y isEmpty().
[noexcept] void QUrlQuery::swap(QUrlQuery &other)
Intercambia esta instancia de consulta URL con other. Esta operación es muy rápida y nunca falla.
QString QUrlQuery::toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
Devuelve este QUrlQuery como un QString. encoding puede utilizarse para especificar la codificación de la cadena URL del valor devuelto.
[noexcept] QUrlQuery &QUrlQuery::operator=(QUrlQuery &&other)
Mover-asigna other a esta instancia QUrlQuery.
QUrlQuery &QUrlQuery::operator=(const QUrlQuery &other)
Copia el contenido del objeto other QUrlQuery , incluidos los delimitadores de la consulta.
No miembros relacionados
[noexcept] size_t qHash(const QUrlQuery &key, size_t seed = 0)
Devuelve el valor hash para key, utilizando seed para sembrar el cálculo.
[noexcept] bool operator!=(const QUrlQuery &lhs, const QUrlQuery &rhs)
Devuelve true si el objeto QUrlQuery rhs no es igual a lhs. En caso contrario, devuelve false.
Véase también operator==().
[noexcept] bool operator==(const QUrlQuery &lhs, const QUrlQuery &rhs)
Devuelve true si los objetos QUrlQuery lhs y rhs tienen el mismo contenido, en el mismo orden, y utilizan los mismos delimitadores de consulta.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.