Qt4.xでビルドが通っていたソースコードがQt5.1でなぜかビルドエラーを吐くようになった。
調べてみると、Qt5からQUrlのメンバ関数だったaddQueryItemが廃止され
変わりにQUrlQueryというクラスが導入されたとのこと。
ということでそれについてのメモ
QUrl target("http://www.example.com/ex.html");
target.addEncodedQueryItem("AAA", "1234");
target.addEncodedQueryItem("BBB", "5678");
上のコードにおいて変数targetには
http://www.example.com/ex.html?AAA=1234&BBB=5678
といったようなURLが格納される。
デリミタはsetQueryDelimitersを用いて自由に変更できる。
また、QPairでQListコンテナを作りsetQueryItemsでいくつかのクエリを一気に追加することもできる。
このクエリの追加に関して、新たに導入されたのがQUrlQueryとかいうクラス
使い方は実はすごい簡単
QUrl target("http://www.example.com/ex.html");
QUrlQuery q;
q.addQueryItem("AAA", "1234");
q.addQueryItem("BBB", "5678");
target.setQuery(q);
このコードで、上と同じURLが変数targetに格納される。
可読性は上がるんだろうけど、コードそのものは長くなる気がする。
あとはhasQueryItemとか、いくつかのちょっとしたメンバ関数が増えたくらいか。
参考: How do you port QUrl addQueryItem to Qt5's QUrlQuery? - Stack Overflow