diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 36411a089e..62d6092c9d 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -199,6 +199,7 @@ #include "qdir.h" // for QDir::fromNativeSeparators #include "qtldurl_p.h" #include "private/qipaddress_p.h" +#include "qurlquery.h" #if defined(Q_OS_WINCE_WM) #pragma optimize("g", off) #endif @@ -1725,6 +1726,18 @@ void QUrl::setQuery(const QString &query) d->sectionIsPresent &= ~QUrlPrivate::Query; } +void QUrl::setQuery(const QUrlQuery &query) +{ + detach(); + + // we know the data is in the right format + d->query = query.toString(); + if (query.isEmpty()) + d->sectionIsPresent &= ~QUrlPrivate::Query; + else + d->sectionIsPresent |= QUrlPrivate::Query; +} + /*! Returns the query string of the URL in percent encoded form. */ diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h index d96f9d11e1..a118a9d468 100644 --- a/src/corelib/io/qurl.h +++ b/src/corelib/io/qurl.h @@ -53,6 +53,7 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE +class QUrlQuery; class QUrlPrivate; class QDataStream; @@ -213,6 +214,7 @@ public: bool hasQuery() const; void setQuery(const QString &query); + void setQuery(const QUrlQuery &query); QString query(ComponentFormattingOptions = PrettyDecoded) const; bool hasFragment() const; diff --git a/src/corelib/io/qurlquery.h b/src/corelib/io/qurlquery.h index 3e0baa32bc..ff66298dfa 100644 --- a/src/corelib/io/qurlquery.h +++ b/src/corelib/io/qurlquery.h @@ -116,9 +116,9 @@ Q_DECLARE_SHARED(QUrlQuery) #if QT_DEPRECATED_SINCE(5,0) inline void QUrl::setQueryItems(const QList > &qry) -{ QUrlQuery q(*this); q.setQueryItems(qry); setQuery(q.query()); } +{ QUrlQuery q(*this); q.setQueryItems(qry); setQuery(q); } inline void QUrl::addQueryItem(const QString &key, const QString &value) -{ QUrlQuery q(*this); q.addQueryItem(key, value); setQuery(q.query()); } +{ QUrlQuery q(*this); q.addQueryItem(key, value); setQuery(q); } inline QList > QUrl::queryItems() const { return QUrlQuery(*this).queryItems(); } inline bool QUrl::hasQueryItem(const QString &key) const @@ -128,7 +128,7 @@ inline QString QUrl::queryItemValue(const QString &key) const inline QStringList QUrl::allQueryItemValues(const QString &key) const { return QUrlQuery(*this).allQueryItemValues(key); } inline void QUrl::removeQueryItem(const QString &key) -{ QUrlQuery q(*this); q.removeQueryItem(key); setQuery(q.query()); } +{ QUrlQuery q(*this); q.removeQueryItem(key); setQuery(q); } inline void QUrl::removeAllQueryItems(const QString &key) { QUrlQuery q(*this); q.removeAllQueryItems(key); } #endif