2013-01-22 15 views
10

, aşağıdaki kod QUrl kullanarak çalışır:QUrl addQueryItem uygulamasını Qt5'in QUrlQuery klasörüne nasıl yüklersiniz? <code>Qt</code> 4'te

QUrl u; 
foreach (const settings::PostItem & pi, settings.post) 
    u.addQueryItem(pi.name, pi.value); 
postData = u.encodedQuery(); 

NOTLAR: wkhtmltopdf ve postData bir QByteArray olduğu bu kodudur. Ancak, Qt 5'in addQueryItem() işlevi artık yok. Bu kodu nasıl yüklersiniz? Dosyanızın üstündeki aşağıdaki satırları ekleyin Qt 4 ile uyumluluğu sağlamak için

cevap

20

:

#if QT_VERSION >= QT_VERSION_CHECK(5,0,0) 
# include <QUrlQuery> 
#endif 

Bu Qt 5.0.0 veya karşı derleme eğer QUrlQuery sadece #include d olacağı anlamına gelir daha büyüktür.

Ardından söz belirtilen kodunun üzerinde aşağıdaki satırı ekleyin:

#if QT_VERSION < QT_VERSION_CHECK(5,0,0) 

ve ardından söz konusu belirtilen kodunun altına bu kodu ekleyin:

#else 
    QUrlQuery q; 
    foreach (const settings::PostItem & pi, settings.post) 
     q.addQueryItem(pi.name, pi.value); 
    postData = q.query(QUrl::FullyEncoded).toUtf8(); 
#endif 

NOT: toUtf8() olduğunu postData, QByteArray ve query(), QString değerini döndürdüğü için kullanılır. toAscii(), Qt 5'te kullanımdan kaldırıldı, ancak UTF-8, yalnızca gerektiğinde Unicode karakterleri olan ASCII alt kümesidir.

DÜZENLEME: Eğer bir URL kısmına sahip gerçek QUrl kullanmak istiyorum, bu ekleyin:

QUrl url; 
url.setQuery(q); 
İlgili konular