4 Qt
、以下代码使用QUrl
有效:
QUrl u;
foreach (const settings::PostItem & pi, settings.post)
u.addQueryItem(pi.name, pi.value);
postData = u.encodedQuery();
注意:此代码来自wkhtmltopdf,postData
是一个 QByteArray。
但是,Qt
5 不再具有该addQueryItem()
功能。你如何移植这段代码?
4 Qt
、以下代码使用QUrl
有效:
QUrl u;
foreach (const settings::PostItem & pi, settings.post)
u.addQueryItem(pi.name, pi.value);
postData = u.encodedQuery();
注意:此代码来自wkhtmltopdf,postData
是一个 QByteArray。
但是,Qt
5 不再具有该addQueryItem()
功能。你如何移植这段代码?
为了确保与Qt
4 的兼容性,请在文件顶部添加以下行:
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
# include <QUrlQuery>
#endif
这意味着只有在您针对5.0.0 或更高版本进行编译QUrlQuery
时才会为d。#include
Qt
然后在问题中指定的代码上方添加以下行:
#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
is aQByteArray
并query()
返回 a QString
。toAscii()
在Qt
5 中已弃用,但 UTF-8 是 ASCII 的子集,仅在必要时使用 Unicode 字符。
编辑:如果您想使用QUrl
具有 URL 部分的实数,请添加:
QUrl url;
url.setQuery(q);