QUrlQuery Class
QUrlQuery 클래스는 URL 쿼리 문자열에 포함된 키-값 쌍을 조작할 수 있는 방법을 제공합니다. 더 보기...
| 헤더: | #include <QUrlQuery> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버 목록
- QUrlQuery는 입출력 및 네트워킹, 네트워크 프로그래밍 API, 암시적 공유 클래스의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입 가능합니다.
QUrlQuery 비교
| 범주 | 비교 가능한 유형 |
|---|---|
| 동등성 | QUrlQuery |
공개 함수
| 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) |
정적 공용 멤버
| char16_t | defaultQueryPairDelimiter() |
| char16_t | defaultQueryValueDelimiter() |
관련 비회원
| 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) |
상세 설명
다음과 같은 URL에서 발견되는 쿼리 문자열을 파싱하는 데 사용됩니다:

위와 같은 쿼리 문자열은 URL을 통해 옵션을 전달하는 데 사용되며, 일반적으로 여러 키-값 쌍으로 디코딩됩니다. 위의 예시에는 "type"과 "color"라는 키를 가진 두 개의 항목이 목록에 포함됩니다. 또한 QUrlQuery를 사용하면 쿼리의 개별 구성 요소를 바탕으로 QUrl::setQuery()에서 사용하기에 적합한 쿼리 문자열을 생성할 수도 있습니다.
쿼리 문자열을 파싱하는 가장 일반적인 방법은 생성자에 쿼리 문자열을 전달하여 초기화하는 것입니다. 그렇지 않은 경우, ` setQuery()` 메서드를 사용하여 파싱할 쿼리를 설정할 수 있습니다. 이 메서드는 ` setQueryDelimiters()` 함수를 사용하여 비표준 구분 기호를 설정한 후, 해당 구분 기호를 사용하는 쿼리를 파싱하는 데에도 사용할 수 있습니다.
인코딩된 쿼리 문자열은 query()을 사용하여 다시 가져올 수 있습니다. 이 메서드는 내부에 저장된 모든 항목을 가져와 지정된 구분자를 사용하여 문자열을 인코딩합니다.
인코딩
QUrlQuery의 모든 getter 메서드는 QUrl::ComponentFormattingOptions 유형의 선택적 매개변수를 지원하며, 여기에는 query()도 포함되어 있어 해당 데이터의 인코딩 방식을 지정합니다. QUrl::FullyDecoded 를 제외하고, 반환된 값은 여전히 퍼센트 인코딩된 문자열로 간주되어야 합니다. 이는 디코딩된 형태로 표현할 수 없는 특정 값들(제어 문자, UTF-8로 디코딩할 수 없는 바이트 시퀀스 등)이 존재하기 때문입니다. 이러한 이유로 퍼센트 문자는 항상 "%25"라는 문자열로 표현됩니다.
QUrlQuery의 모든 설정 메서드와 hasQueryItem()과 같은 쿼리 메서드는 인코딩된 형식만 허용합니다. QUrl 와 달리, 전달되는 문자열이 디코딩된 상태임을 지정하는 선택적 매개변수는 없습니다. 부적절하게 인코딩된 문자열이 세터나 쿼리 메서드에 전달되더라도, QUrlQuery는 오류가 발생하지 않고 복구를 시도합니다. 즉, 이 클래스의 모든 함수는 문자열 인수를 마치 QUrl::TolerantMode 디코딩 모드가 지정된 것처럼 파싱합니다.
애플리케이션 코드는 항상 올바른 인코딩을 보장하도록 노력해야 하며, TolerantMode 구문 분석이 문자열을 수정해 줄 것이라고 의존해서는 안 됩니다. 특히, 모든 사용자 입력은 이 클래스의 함수에 전달되기 전에 QUrl::toPercentEncoding() 또는 이와 유사한 함수를 사용하여 먼저 퍼센트 인코딩되어야 합니다.
공백 및 더하기 기호("+") 처리
웹 브라우저는 일반적으로 HTML FORM 요소에서 발견되는 공백을 더하기 기호("+")로, 더하기 기호를 퍼센트 인코딩된 형태(%2B)로 인코딩합니다. 그러나 URL을 규정하는 인터넷 사양에서는 공백과 더하기 기호를 동등한 것으로 간주하지 않습니다.
이러한 이유로, QUrlQuery는 공백 문자를 "+"로 인코딩하지 않으며, "+"를 공백 문자로 디코딩하지도 않습니다. 대신, 공백 문자는 인코딩된 형태인 "%20"으로 렌더링됩니다.
HTML 양식과 같은 인코딩 방식을 지원하기 위해, QUrlQuery는 "%2B" 시퀀스를 더하기 기호로 디코딩하지 않으며, 더하기 기호를 인코딩하지도 않습니다. 사실, 키, 값 또는 쿼리 문자열에서 발견되는 모든 "%2B" 또는 "+" 시퀀스는 작성된 그대로 유지됩니다("%2b"가 "%2B"로 대문자 처리되는 경우 제외).
전체 디코딩
QUrl::FullyDecoded 서식을 사용하면 모든 퍼센트 인코딩된 시퀀스가 완전히 디코딩되며, '%' 문자는 그 자체를 나타내는 데 사용됩니다. QUrl::FullyDecoded 는 데이터 손실을 초래할 수 있으므로 주의해서 사용해야 합니다. 어떤 데이터가 손실될 수 있는지에 대한 정보는 QUrl::FullyDecoded 문서를 참조하십시오.
이 포맷팅 모드는 퍼센트 인코딩이 바람직하지 않은 상황에서 사용자에게 표시되는 텍스트를 다룰 때에만 사용해야 합니다. QUrlQuery의 세터 및 쿼리 메서드는 이에 상응하는 QUrl::DecodedMode 구문 분석을 지원하지 않으므로, QUrl::FullyDecoded 를 사용하여 키 목록을 가져올 경우 객체에서 해당 키를 찾을 수 없는 결과가 발생할 수 있습니다.
비표준 구분 기호
기본적으로 QUrlQuery는 키와 값을 구분하는 데 등호("=")를 사용하고, 키-값 쌍을 서로 구분하는 데 앰퍼샌드("&")를 사용합니다. setQueryDelimiters()를 호출하여 QUrlQuery가 쿼리를 파싱하고 재구성하는 데 사용하는 구분자를 변경할 수 있습니다.
비표준 구분 기호는 RFC 3986에서 "하위 구분 기호(sub-delimiters)"라고 부르는 것 중에서 선택해야 합니다. 이들은 다음과 같습니다:
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="다른 문자의 사용은 지원되지 않으며, 예기치 않은 동작을 유발할 수 있습니다. QUrlQuery는 전달된 구분자가 유효한지 확인하지 않습니다.
QUrl도 참조하십시오 .
멤버 함수 문서
QUrlQuery::QUrlQuery()
빈 QUrlQuery 객체를 생성합니다. 이후 setQuery()을 호출하여 쿼리를 설정하거나, addQueryItem()을 사용하여 항목을 추가할 수 있습니다.
setQuery() 및 addQueryItem()도 참조하십시오 .
[explicit] QUrlQuery::QUrlQuery(const QString &queryString)
기본 쿼리 구분자를 사용하여 QUrlQuery 객체를 생성하고 queryString 쿼리 문자열을 파싱합니다. 다른 구분자를 사용하여 쿼리 문자열을 파싱하려면, 먼저 setQueryDelimiters()을 사용하여 구분자를 설정한 다음, setQuery()을 사용하여 쿼리를 설정해야 합니다.
[explicit] QUrlQuery::QUrlQuery(const QUrl &url)
기본 쿼리 구분자를 사용하여 url URL에서 발견된 쿼리 문자열을 파싱하고 QUrlQuery 객체를 생성합니다. 다른 구분자를 사용하여 쿼리 문자열을 파싱하려면, 먼저 setQueryDelimiters()을 사용하여 구분자를 설정한 다음, setQuery()을 사용하여 쿼리를 설정해야 합니다.
QUrl::query()도 참조하십시오 .
QUrlQuery::QUrlQuery(std::initializer_list<std::pair<QString, QString>> list)
키/값 쌍의 list 를 기반으로 QUrlQuery 객체를 생성합니다.
QUrlQuery::QUrlQuery(const QUrlQuery &other)
other 의 QUrlQuery 객체 내용을 쿼리 구분자를 포함하여 복사합니다.
[noexcept, since 6.5] QUrlQuery::QUrlQuery(QUrlQuery &&other)
other 의 QUrlQuery 객체 내용(쿼리 구분자 포함)을 이동합니다.
이 함수는 Qt 6.5에서 도입되었습니다.
[noexcept] QUrlQuery::~QUrlQuery()
이 QUrlQuery 객체를 삭제합니다.
void QUrlQuery::addQueryItem(const QString &key, const QString &value)
URL의 쿼리 문자열 끝에 “ key = value ” 쌍을 추가합니다. 이 메서드는 동일한 키를 가진 기존 항목이 있을 경우 이를 덮어쓰지 않습니다.
참고: 이 메서드는 HTML 양식에서와 같이 공백(ASCII 0x20)과 더하기("+") 기호를 동일하게 취급하지 않습니다. 공백을 더하기 기호로 표현해야 하는 경우, 실제 더하기 기호를 사용하십시오.
참고: 키와 값문자열은 퍼센트 인코딩(%encoded) 형식이어야 합니다. 이 함수는 부적절하게 인코딩된 입력이 제공될 경우 복구를 시도하지만, 이로 인해 데이터 손실이 발생할 수 있습니다. 자세한 내용은 QUrlQuery#Encoding 을 참조하십시오.
hasQueryItem() 및 queryItemValue()도 참조하십시오 .
QStringList QUrlQuery::allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
URL에서 키가 key 인 쿼리 문자열 값들의 목록을 반환하며, 반환 값을 인코딩할 때는 encoding 에 지정된 옵션을 사용합니다. 키 key 가 발견되지 않으면, 이 함수는 빈 목록을 반환합니다.
참고: 키는 퍼센트 인코딩된 형식이어야 합니다. 이 함수는 잘못 인코딩된 입력이 제공된 경우 복구를 시도하지만, 이로 인해 데이터 손실이 발생할 수 있습니다. 자세한 내용은 QUrlQuery#Encoding 를 참조하십시오.
queryItemValue() 및 addQueryItem()도 참조하십시오 .
void QUrlQuery::clear()
현재 저장된 모든 키-값 쌍을 제거하여 이 QUrlQuery 객체를 초기화합니다. 쿼리 구분자가 변경된 경우, 이 함수는 변경된 값을 그대로 유지합니다.
isEmpty() 및 setQueryDelimiters()도 참조하십시오 .
[static constexpr noexcept] char16_t QUrlQuery::defaultQueryPairDelimiter()
키-값 쌍을 서로 구분하는 데 사용되는 기본 문자, 앰퍼샌드("&")를 반환합니다.
참고: Qt 6이전 버전에서는 이 함수가 ` QChar`을 반환했습니다.
setQueryDelimiters(), queryPairDelimiter(), defaultQueryValueDelimiter()도 참조하십시오 .
[static constexpr noexcept] char16_t QUrlQuery::defaultQueryValueDelimiter()
쿼리에서 키와 값을 구분하는 데 사용되는 기본 문자, 즉 등호("=")를 반환합니다.
참고: Qt 6이전 버전에서는 이 함수가 ` QChar`를 반환했습니다.
setQueryDelimiters(), queryValueDelimiter(), defaultQueryPairDelimiter()도 참조하십시오 .
bool QUrlQuery::hasQueryItem(const QString &key) const
URL에서 키가 key 와 동일한 쿼리 문자열 쌍이 존재할 경우 true 를 반환합니다.
참고: 키는 퍼센트 인코딩된 형식이어야 합니다. 이 함수는 부적절하게 인코딩된 입력이 제공된 경우 복구를 시도하지만, 이로 인해 데이터 손실이 발생할 수 있습니다. 자세한 내용은 QUrlQuery#Encoding 를 참조하십시오.
addQueryItem() 및 queryItemValue()도 참조하십시오 .
bool QUrlQuery::isEmpty() const
이 QUrlQuery 객체에 키-값 쌍이 포함되어 있지 않은 경우(예: 기본 생성 후 또는 빈 쿼리 문자열을 파싱한 후), true 를 반환합니다.
setQuery() 및 clear()도 참조하십시오 .
QString QUrlQuery::query(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
이 QUrlQuery 객체에 현재 저장된 키-값 쌍을 바탕으로, 해당 객체에 지정된 쿼리 구분자로 구분하여 재구성된 쿼리 문자열을 반환합니다. 키와 값은 encoding 매개변수로 지정된 옵션을 사용하여 인코딩됩니다.
이 함수에서 유일하게 모호한 구분자는 해시("#")입니다. URL에서 해시는 쿼리 문자열과 그 뒤에 올 수 있는 프래그먼트를 구분하는 데 사용되기 때문입니다.
반환된 문자열 내 키-값 쌍의 순서는 원본 쿼리의 순서와 정확히 동일합니다.
setQuery(), QUrl::setQuery(), QUrl::fragment() 및 Encoding항목도 참조하십시오 .
QString QUrlQuery::queryItemValue(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
URL에서 키 ` key `와 연관된 쿼리 값을 반환하며, 반환 값을 인코딩할 때는 ` encoding `에 지정된 옵션을 사용합니다. 키 ` key `를 찾을 수 없는 경우, 이 함수는 빈 문자열을 반환합니다. 빈 값과 존재하지 않는 키를 구분해야 하는 경우, 먼저 ` hasQueryItem()`를 사용하여 키의 존재 여부를 확인해야 합니다.
key 키가 중복으로 정의된 경우, 이 함수는 쿼리 문자열에 포함된 순서나 addQueryItem()을 통해 추가된 순서대로 가장 먼저 발견된 키를 반환합니다.
참고: 키는 퍼센트 인코딩된 형식이어야 합니다. 이 함수는 부적절하게 인코딩된 입력이 제공된 경우 복구를 시도하지만, 이로 인해 데이터 손실이 발생할 수 있습니다. 자세한 내용은 QUrlQuery#Encoding 를 참조하십시오.
addQueryItem(), allQueryItemValues() 및 인코딩항목도 참조하십시오 .
QList<std::pair<QString, QString>> QUrlQuery::queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
encoding 에 지정된 옵션을 사용하여 항목을 인코딩한 후, URL의 쿼리 문자열을 키-값 쌍의 맵 형태로 반환합니다. 요소의 순서는 쿼리 문자열에 있는 순서나 setQueryItems()를 통해 설정된 순서와 동일합니다.
setQueryItems() 및 인코딩항목도 참조하십시오 .
QChar QUrlQuery::queryPairDelimiter() const
query()에서 쿼리 문자열을 재구성하거나 setQuery()에서 파싱할 때 키-값 쌍을 구분하는 데 사용되는 문자를 반환합니다.
setQueryDelimiters() 및 queryValueDelimiter()도 참조하십시오 .
QChar QUrlQuery::queryValueDelimiter() const
query()에서 쿼리 문자열을 재구성하거나 setQuery()에서 쿼리 문자열을 구문 분석할 때 키와 값을 구분하는 데 사용되는 문자를 반환합니다.
setQueryDelimiters() 및 queryPairDelimiter()도 참조하십시오 .
void QUrlQuery::removeAllQueryItems(const QString &key)
URL에서 키가 key 와 동일한 모든 쿼리 문자열 쌍을 제거합니다.
참고: 키는 퍼센트 인코딩된 형식이어야 합니다. 이 함수는 부적절하게 인코딩된 입력이 제공된 경우 복구를 시도하지만, 이로 인해 데이터 손실이 발생할 수 있습니다. 자세한 내용은 QUrlQuery#Encoding 를 참조하십시오.
removeQueryItem()도 참조하십시오 .
void QUrlQuery::removeQueryItem(const QString &key)
URL에서 키가 key 인 쿼리 문자열 쌍을 제거합니다. 키가 key 인 항목이 여러 개 있는 경우, 쿼리 문자열에 포함된 순서나 addQueryItem()를 통해 추가된 순서대로 첫 번째 항목을 제거합니다.
참고: 키는 퍼센트 인코딩된 형식이어야 합니다. 이 함수는 부적절하게 인코딩된 입력이 제공된 경우 복구를 시도하지만, 이로 인해 데이터 손실이 발생할 수 있습니다. 자세한 내용은 QUrlQuery#Encoding 를 참조하십시오.
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-delimiters)"라고 부르는 것 중에서 선택해야 합니다. 이들은 다음과 같습니다:
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="다른 문자의 사용은 지원되지 않으며, 예기치 않은 동작을 유발할 수 있습니다. 이 메서드는 유효한 구분자가 전달되었는지 확인하지 않습니다.
queryValueDelimiter() 및 queryPairDelimiter()도 참조하십시오 .
void QUrlQuery::setQueryItems(const QList<std::pair<QString, QString>> &query)
이 QUrlQuery 객체의 항목들을 query 로 설정합니다. query 에 있는 요소들의 순서는 유지됩니다.
참고: 이 메서드는 HTML 양식과 달리 공백(ASCII 0x20)과 더하기("+") 기호를 동일하게 취급하지 않습니다. 공백을 더하기 기호로 표현해야 하는 경우, 실제 더하기 기호를 사용하십시오.
참고: 키와 값은 퍼센트 인코딩된 형식이어야 합니다. 이 함수는 잘못 인코딩된 입력이 제공될 경우 복구를 시도하지만, 이로 인해 데이터 손실이 발생할 수 있습니다. 자세한 내용은 QUrlQuery#Encoding 를 참조하십시오.
queryItems() 및 isEmpty()도 참조하십시오 .
[noexcept] void QUrlQuery::swap(QUrlQuery &other)
이 URL 쿼리 인스턴스를 other 로 교체합니다. 이 작업은 매우 빠르며 절대 실패하지 않습니다.
QString QUrlQuery::toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
이 ` QUrlQuery `를 ` QString` 형식으로 반환합니다. ` encoding `를 사용하여 반환 값의 URL 문자열 인코딩을 지정할 수 있습니다.
[noexcept] QUrlQuery &QUrlQuery::operator=(QUrlQuery &&other)
other 를 이 QUrlQuery 인스턴스에 할당합니다.
QUrlQuery &QUrlQuery::operator=(const QUrlQuery &other)
쿼리 구분자를 포함하여 ` other ` QUrlQuery 객체의 내용을 복사합니다.
관련 비멤버
[noexcept] size_t qHash(const QUrlQuery &key, size_t seed = 0)
seed 를 계산의 시드로 사용하여 key 의 해시 값을 반환합니다.
[noexcept] bool operator!=(const QUrlQuery &lhs, const QUrlQuery &rhs)
QUrlQuery 객체 rhs 가 lhs 와 같지 않은 경우 true 을 반환합니다. 그렇지 않은 경우 false 을 반환합니다.
operator==()도 참조하십시오 .
[noexcept] bool operator==(const QUrlQuery &lhs, const QUrlQuery &rhs)
QUrlQuery 객체인 lhs 와 rhs 가 동일한 내용을 동일한 순서로 포함하고, 동일한 쿼리 구분자를 사용하는 경우 true 를 반환합니다.
© 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.