質問内容
私がQt Widgetでカスタムウィジェットを作成する時
だいたいここのようなプロジェクトになります。
上記プロジェクトでは
include/MyWidget.hppと
src/MyWidget.cppに記載した
MyWidgetクラスを静的リンクライブラリ化して
test/main.cppで使用するというものです。
そこではinclude/MyWidget.hpp内の
MyWidgetクラスがuiにまつわる情報を持つ
Ui::MyWidgetUiへのポインタを所持しているので
uiとの情報のやり取りを
行うときシグナルやスロットをMyWidgetクラスに記載し、
そのコンストラクタでconnectすれば良いことがわかります。
またMyWidgetクラスはCMakeのadd_subdirectoryコマンドで
上記プロジェクトのcmakeスクリプトを
呼び出せば他のQt WidgetプロジェクトでもQt Designerで
uiファイル内のQWidgetオブジェクトを格上げしてやれば
使用できます。
Qt Quickでも上記プロジェクトと同じように
一つのプロジェクト(画面や部品)に一つのc++クラスを持ち、
それに対応したqmlがあり他プロジェクトのqmlから
そのクラスを呼び出せるようなプロジェクトを作成したいのですが
それが分からず止まってる状態です。
そこで色々ググってみて今回の目的と近いサイトは見つけました。
上記サイトではc++クラス内にQQuickWindowと
QQmlApplicationEngineを持ち,
そこのコンストラクタ内でqmlファイルのロードと
qmlタイプへのポインタ取得を行っているようですが
そのクラス内のQQuickWindow型か
QQmlApplicationEngine型の変数を
他のプロジェクトのpmlファイル内でqmlタイプとして
利用できればよさそうなのですが。
そのようなことを実現する方法はあるのでしょうか。
おかしなことを言っていたら申し訳ございません。
ご回答よろしくお願いします。
参考文献
QMLで記述したウィンドウをC++から制御する-Theoride Technology
開発環境の詳細
|種類|ソフトウェア名|バージョン|備考|
|---|---|---|
|os|Linux Mint|20.1 Cinnamon|特になし|
|qt|ライブラリ|5.15.2|オープンソースライセンス版を使用|
|コンパイラ|GNU g++|10.2.0|特になし|
|ビルドツール|CMake|3.20.0|set_property(TARGET ターゲット名 PROPERTY CXX_STANDARD 20)をCMakeLists.txtに書き込みc++20でコンパイル|
|IDE|QtCreator|4.14.1|特になし|
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/03/20 20:16