12

4ではQt、次のコードを使用してQUrl動作します。

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

:このコードはwkhtmltopdfからのものでpostDataあり、QByteArrayです。

ただし、Qt5にはaddQueryItem()もう機能がありません。このコードをどのように移植しますか?

4

1 に答える 1

21

4との互換性を確保するためにQt、ファイルの先頭に次の行を追加します。

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

これは、5.0.0以降に対してコンパイルしている場合QUrlQueryにのみdになることを意味します。#includeQt

次に、質問で指定されたコードの上に次の行を追加します。

#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

:はaであり、を返すtoUtf8()ために使用されます。5で非推奨になりましたが、UTF-8は、必要な場合にのみUnicode文字を使用するASCIIのサブセットです。postDataQByteArrayquery()QStringtoAscii()Qt

編集QUrl: URL部分を持つリアルを使用したい場合は、これを追加します:

 QUrl url;
 url.setQuery(q);
于 2013-01-22T18:12:02.903 に答える