2012年4月30日月曜日

GW前半:Qt5とQtQuick2とQtCreator2.5RCを試してみた #qtjp

Qt5とは

Qt5とは、現在誠意開発中のQtの次期バージョンです。Alpha版がリリースされたという事で、そろそろ試さないと行けないなと思い、やりました。
名古屋勉強会でもネタになっていたので良いタイミングでした。
そもそもQtとは?という方はググっていただきたいと思いますが、主な変更点は次のページに日本語でまとめられています。
Qt Labs Japan - Qt5 アルファ版

Qt5のビルドとQtCreator2.5RCのビルド

どちらも、AlphaやRCが付いているため、無理にビルドする必要はなくてバイナリーをダウンロードするという手もありましたが、挑戦して見ました。
私がハマったのは、Qt5を試すにはQtCreator2.5RC以上が必要という点と、QtQuick1.X系と2.0系の扱い方の違いでした

Qt5のビルド方法

これに従って、行いました。なお、構築環境はリリースされたての、Ubuntu12.04(Precise)の64ビット版で行いました。
Qt Developer Network - Building_Qt_5_from_Git

実は、同じ日に理音さんも同じ事をやっていて上記の内容を抜粋した大変見やすい記事があるのでこちらを見ればよいでしょう。Wikiの方にはcleanやupdateの仕方が書いてありますから、目を通しておいたほうが良いです。make cleanとやっても綺麗にはなりません。(*1)
理ろぐ - Qt5の最新版をビルドしてQt Quick2.0をお試しする

さて、出来上がったらqt5/qtbase/binにあるqmakeをQtCreatorに読み込ませるだけ。。。と思ってはいけません。ハマった点その1
現在の安定版の2.4系ではqmlviewerがないよって黄色い三角印と共に警告されてしまいます。バグトラックはこちら
2.5RCで解決されていると書かれているので、それを使うことにします。

(*1)Qtはgitのsubmoduleという機能を使っています。その関係で、make cleanとやっても全てがクリーンになるわけじゃないのです。

QtCreator2.5RCのビルド

ここからダウンロードするだけです。自前でビルドする意味はあんまりないです。
あとは、qmakeを食べさせてあげればHelloWorldが動きます。
Qt Developer Network - Qt Creator のリリース


ちなみに、QtCreatorのビルドはQt4系でやります(笑)
とあるネタポスト↓

@IoriAYANE その Qt5 で Qt Creater もビルドするんですねw
posted at 23:47:55
ちなみに、ネタポストを実際にやってみたところ、ビルドエラーになったそうです。


全く関係ないですけど、qt-creator-2.5.0-rc-src/src/plugins/qtsupport/baseqtversion.cppのCore::FeatureSet BaseQtVersion::availableFeatures() constとか見るとなかなかおもしろいです。QtのバージョンによってQtQuickのバージョンがセットされるんですね。

QtQuick2を試す

ここの下の方を参考にしてください
理ろぐ - Qt5の最新版をビルドしてQt Quick2.0をお試しする

ここでうっかり、Qt Quick Applicationを選択すると、なぜかQt5が出てこなくて頭にはてながいっぱい出てしまいます。(いずれこっちでやりたいのですが、今回はパス)
現状ではQt4.0系がないとQtQuickのプロジェクトが作れませんが、「import QtQuick 2.0」と修正すると自動的にQt5に変更されます。終わり(ではなかった!)


実はQtCreatorにバグがあるので紹介します。ハマった点その2
ここで、もうひとつ同じようにプロジェクトを作成します。(ここではuntitled1というプロジェクト名)

もうひとつ作成したプロジェクトは確かにQtQuick1.1で生成されているのですが、実行すると次のようなエラー文になります。
qmlscene: 'import QtQuick 1.1' is no longer supported.
Use qmlviewer to load file '/home/nekomatu/qc2.5rc/dev/untitled1/untitled1.qml'.

QtQuick2.0系はqmlsceneを使い、1.0系ではqmlviewerを使います。そのように、エラーが出ています。本来ならば、この切り替えは自動で行われなければならないと思われる(*2)のですが、そうはならないようなので下の図のようにすることで、qmlviewerに切り替えることができます。
左のProjectを選択して、QtVersionを4.8系にします。これで実行できるようになります。このように、Qt5はQtQuick1.X系を直接サポートしているわけじゃないので注意が必要です。今からQtQuick(QML)をやる方は覚えておいてください(*3)。
What's New in Qt Quick 2 - QtQuick 1 is now a separate library and module

(*2)数字を2.0に書き換えると自動的にQt5に切り替わるのに、その反対がおかしいようです。ファイルを保存した段階で判定してるのかな?など試しては見たのですが、そうではないみたいで。。。バグトラッカーの方をもうちょい漁って見たいと思います。
(*3)とはいうものの、作りこまない限りimport QtQuickの数字の部分を変えるだけで移植できるようです。(ただし、該当箇所は全部買えないとダメ。xargsとかで一気に置換すればいいだけですけど。)
@IoriAYANE だいたい動く。XMLListModel は別モジュールになったけど。
posted at 16:52:51

感謝!

@task_jpさんと@IoriAYANEさんに一日中Twitterで相談に乗ってもらいました。本当にありがとうございます。しかし、Desktop版Twitterクライアントは目処が全くたっておりません、悲しいッ

2012年4月21日土曜日

Qt名古屋勉強会 #4 に参加した

Qt名古屋勉強会 #4のATND
改めてQMLのパワーに圧倒されつつ、Qtのパワーも感じられてよかったです。
それ以上に今回は本番(=懇親会という名の呑み会)が充実してました。二次会にも誘っていただいて奢っていただいて。。。
ごちそうさまでしたっ

次の予定はOSC名古屋です。自分はその夜に東京に2週間ほど戻ります。

2012年4月1日日曜日

入社式終わりました

ごめんなさい。今日は4月1日で嘘なんだ。騙されちゃったらぜひ、ふぁぼってほしい
日曜日なので、明日入社式やります。
5月いっぱいまでは名古屋にいます。そして、インターネットが満足につなげない環境です。何かありましたらメールなどくださいませ。