«前の日記(2011年09月11日) 最新 次の日記(2011年10月28日)» 編集

日々をアレコレ


2011年09月26日

Qt QuickでC++のオブジェクトを扱う

Qtのリファレンスサイト「Qt 4.7: Using QML in C++ Applications」にある方法では、QMLとC++の連携がうまく行かなかったのでいろいろとメモ。

Embedding C++ objects into QML componentsにあるサンプルソースは、QMLから参照するオブジェクトのクラスをmain関数の直前に定義しているけど、WindowsとMacOSのQtCreatoreではリンクエラーが発生。クラスを宣言したヘッダと、クラスを定義したソースファイルを作成し、リンクさせると問題なく動作したので、クラスを追加すれば問題なく動作する。

また、QMLファイルの設定はWindowsとMacOSではちょっと違うらしい。Windowsは次のようにする。

view.setSource(QUrl::fromLocalFile("qml/(プロジェクト名)/MyItem.qml"));

MacOSだと次のようにする。

view.setSource(QUrl::fromLocalFile("../Resources/qml/(プロジェクト名)/MyItem.qml"));

相対パス指定の場合、Windowsでは実行ファイルのあるフォルダにqml以下のフォルダが生成され、QMLファイルもそこにコピーされるため上のような記述で動作する。MacOSでWindowsと同じように記述すると、「(.appファイル/)Contents/MacOS/qml/(プロジェクト名)/MyItem.qml」を参照することになるが、実際にファイルが存在するのは「(.appファイル/)Contents/Resouces/qml/(プロジェクト名)/MyItem.qml」となるので、上のような記述が必要なようだ。


«前の日記(2011年09月11日) 最新 次の日記(2011年10月28日)» 編集