ネットワーク上から何かしらデータを持ってくる作業と言うのは時々出てくるわけだ。twitterクライアントにしてもQOAuthでOAuthはパスできたにせよ、そのURLからデータを持ってこないとAPIアクセスはできないわけで。
と言うわけでさくっとwgetのような感じでURLからもってこいやあ!ってな実装。
- QNetworkAccessManagerを用意します。
- QNetworkAccessManager::finished(QNetworkReply*)と言うシグナルと適当なスロットをconnect。
- QNetworkRequestを作ってQNetworkAccessManager::get()を叩く。
- スロットでQNetworkReply*をあされ!。
以上。
やることはQNetworkRequestを作って読み込み開始してあとはシグナル待ちだけで済むって言う。シンプルやなー。素敵。
QNetworkReply::readAll()でもってきたデータをQByteArrayで拾えたりします。QNetworkRequestにQOAuthで作ったtwitterのAPIに渡すURLを指定してやればあっさりAPIにアクセスできるのよ。
んで拾ってきたXMLを解析してprofile_image_urlを同じようにQNetworkAccessManager経由で取得してやると、
あっさりアイコン付きに。
余談。
profile_image_urlの表示にQGraphicsWebViewを使ったらどうなるのかな?、とか思ってやってみたのだけど、普通に表示されました。が、rotateしたときに画像は回転しているものの枠が残っちゃうのよね。なのでQImageで取得した上でQGraphicsPixmapItemに。
QGraphicsItemはQObjectじゃないよなー、どうやってQImageのやりとりしよっかなーとか考えたり。アイコン一つ表示させるためにわざわざ取得用クラスを作ったり、地味に手間かかったやんよー。
「そもそもなんでお前はそんなに回したいんだ?」って感じですが、なんでだろう。でもなんかQGraphicsViewを折角使ってるんだし拡縮したり回したりしたいじゃんよ!。