在Qt
4,使用下面的代码QUrl
工作:
QUrl u;
foreach (const settings::PostItem & pi, settings.post)
u.addQueryItem(pi.name, pi.value);
postData = u.encodedQuery();
Run Code Online (Sandbox Code Playgroud)
注意:此代码来自wkhtmltopdf并且postData
是QByteArray.
但是,Qt
5不再具有该addQueryItem()
功能.你如何移植这段代码?
wad*_*ash 21
为了确保与Qt
4的兼容性,请在文件顶部添加以下行:
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
# include <QUrlQuery>
#endif
Run Code Online (Sandbox Code Playgroud)
这意味着QUrlQuery
只有在#include
编译Qt
5.0.0或更高版本时才会出现这种情况.
然后在问题中指定的代码上方添加以下行:
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
Run Code Online (Sandbox Code Playgroud)
然后在问题中指定的代码下面插入此代码:
#else
QUrlQuery q;
foreach (const settings::PostItem & pi, settings.post)
q.addQueryItem(pi.name, pi.value);
postData = q.query(QUrl::FullyEncoded).toUtf8();
#endif
Run Code Online (Sandbox Code Playgroud)
注意:toUtf8()
使用因为postData
是a QByteArray
并query()
返回a QString
.toAscii()
在Qt
5 中已弃用,但UTF-8是仅在必要时使用Unicode字符的ASCII子集.
编辑:如果您想使用QUrl
具有URL部分的实际,请添加以下内容:
QUrl url;
url.setQuery(q);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12594 次 |
最近记录: |