2013-01-22 108 views

回答

20

爲了確保兼容性與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()是因爲postDataQByteArrayquery()返回QStringtoAscii()已在Qt 5中被棄用,但UTF-8是僅在必要時使用Unicode字符的ASCII子集。

編輯:在這種情況下要使用具有URL部分真正QUrl,補充一點:

QUrl url; 
url.setQuery(q);