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