Ответ 1
Чтобы обеспечить совместимость с Qt
4, добавьте следующие строки вверху вашего файла:
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
# include <QUrlQuery>
#endif
Это означает, что QUrlQuery
будет только #include
d, если вы компилируете против Qt
5.0.0 или выше.
Затем добавьте следующую строку над кодом, указанным в вопросе:
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
а затем вставьте этот код под кодом, указанным в вопросе:
#else
QUrlQuery q;
foreach (const settings::PostItem & pi, settings.post)
q.addQueryItem(pi.name, pi.value);
postData = q.query(QUrl::FullyEncoded).toUtf8();
#endif
ПРИМЕЧАНИЕ: toUtf8()
используется, потому что postData
является QByteArray
и query()
возвращает a QString
. toAscii()
устарел в Qt
5, но UTF-8 является подмножеством ASCII с символами Unicode только при необходимости.
EDIT. Если вы хотите использовать реальный QUrl
, который имеет часть URL, добавьте это:
QUrl url;
url.setQuery(q);