为了确保与Qt 4的兼容性,请在文件顶部添加以下行:
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
# include
#endif
这意味着如果要针对Qt 5.0.0或更高版本进行编译,QUrlQuery将仅#包含.
然后在问题中指定的代码之上添加以下行:
#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()返回一个QString. toAscii()在Qt 5中被弃用,但UTF-8仅在需要时才是具有Unicode字符的ASCII的子集.
编辑:如果您想使用具有URL部分的真正QUrl,请添加以下内容:
QUrl url;
url.setQuery(q);