私たちのチームは、C++、QML、およびJSを利用するQtアプリケーションを開発しています。ファイル名を表す非言語固有の文字列とエラーコードを表すint
を公開する最良の方法は何ですか?すべての言語で簡単に使用できるようにするにはどうすればよいですか?グローバル文字列とintをC++、QML、およびJSに公開する方法
答えて
QObject
のプロパティとしてこれらの文字列とintを実装し、main.cpp
にそのオブジェクトのインスタンスを作成し、それをシングルトンとして登録するのが最も効率的でクリーンなソリューションです。
// before main()
YourType data;
static QObject * getData(QQmlEngine * e, QJSEngine *) {
e->setObjectOwnership(&data, QQmlEngine::CppOwnership); // just in case
return &data;
}
// in main()
qmlRegisterSingletonType<YourType>("Core", 1, 0, "Data", getData);
QQmlApplicationEngine engine;
//...
そして今、あなたはC++のグローバルdata
を持っている、とQMLのグローバルData
。最初のケースでは、data
をにアクセスする必要があるソースとして宣言する必要があります.2番目のケースでは、Data
とそのプロパティにアクセスするには、import Core 1.0
にする必要があります。
シングルトン作成関数は、各呼び出しで新しいオブジェクトを作成する必要があります。 オブジェクトは、エンジンによって管理されるエンジンごとのシングルトンおよびライフタイムです。 –
@KevinKrammer - ドキュメントの例では、エンジンパラメータはまったく使用されません。それはエンジンの親和性の設定があるかのようには思われません。これはうまくいくようですが、私は個人的にはマルチエンジンのシナリオでそれを使用していません。このようにして、C++とQMLの両方でグローバルにすることができます。 – dtech
"注:シングルトンタイプのプロバイダから返されたQObjectシングルトンタイプのインスタンスは、明示的なQQmlEngine :: CppOwnershipフラグが設定されていない限り、QMLエンジンが所有します。 http://doc.qt.io/qt-5/qqmlengine.html#qmlRegisterSingletonType-1 –
- 1. QMLにC++クラスを公開
- 2. C++、文字列、およびポインタ
- 3. Django:投稿を公開および非公開にする
- 4. C++:文字列オブジェクトをint配列にコピーする方法は?
- 5. Genericの文字列とintを比較する方法C#
- 6. 公開文字列を返すテキストを編集する方法?
- 7. QDeclarativeを使用してQMapをQMLに公開する方法
- 8. クエリ文字列および/#/ URLに
- 9. CおよびC++での文字列入力
- 10. C++/CLIおよび.NETうち、文字列のC#で
- 11. C#スレッド - スレッドを開始および停止する方法
- 12. MVC3、RavenDb、Web公開、およびソースコントロール
- 13. intを文字列に変換する方法並列配列
- 14. 目的C、クラス、およびグローバル変数
- 15. intとcharの文字列 - C
- 16. 文字列とint型連結のC++
- 17. Javaで文字列、文字列配列、およびint配列を保持するオブジェクトを作成するにはどうすればよいですか?
- 18. ファブリックjs iPhoneおよびiPadで文字化けする
- 19. 内部文字列、文字列プール、およびパーマネントスペースのガベージコレクション
- 20. 文字列Aおよび文字列Sのセットが
- 21. キャッチpy_compile.PyCompileError、および文字列
- 22. Javaおよび文字列分割
- 23. WCFサービスをasmxクライアントおよびWCFクライアントに公開する
- 24. Umbracoの保存および公開ボタンを無効にする
- 25. 文字列をJavaの文字列とintに分割する
- 26. 文字列をGolangの[int]文字列に変換する方法
- 27. C#およびT-SQL文字列[]パック/アンパックユーティリティ関数
- 28. Cプログラミングの文字列、ポインタ、および割り当て
- 29. xmlの文字列とintのアンドロイドスタジオの文字列としてのintを読み取る方法
- 30. データフレームをサブセット化するときに文字列をオブジェクトおよびサブセットとして使用する方法
http://doc.qt.io/qt-5/qtqml-cppintegration-topic.html – AlexanderVX