Qt4与Qt5的QUrl兼容性

我们使用QUrl装载url请求的时候,往往需要写参数,但是由于Qt4与Qt5的改动导致QUrl接口也会不一样。

1
http://www.example.com?key1=value1&key2=value2

Qt4写法

1
2
3
QUrl url("http://www.example.com");
url.addQueryItem("key1", "value1");
url.addQueryItem("key2", "value2");

Qt5写法

1
2
3
4
5
QUrl url("http://www.example.com");
QUrlQuery urlQuery(url);
urlQuery.addQueryItem("key1", "value1");
urlQuery.addQueryItem("key2", "value2");
url.setQuery(urlQuery);

兼容Qt4/Qt5写法

1
2
3
4
5
6
7
8
9
10
11
    QUrl url("http://www.example.com");
#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0)) // Qt4
url.addQueryItem("key1", "value1");
url.addQueryItem("key2", "value2");
#else
QUrlQuery urlQuery(url);

urlQuery.addQueryItem("key1", "value1");
urlQuery.addQueryItem("key2", "value2");
url.setQuery(urlQuery);
#endif