私はRectangle
のqmlファイルを持っています。私はonClicked()
をC++のバックエンドから起動したいと思います。 C++/QtバックエンドでQMLコンポーネント参照へのアクセスを取得するにはどうすればよいですか?C++バックエンドのQMLコンポーネントにアクセスするには
0
A
答えて
1
オブジェクトを見つけるには、QObject::findChild()
を使用し、公称方法と同じように信号を呼び出すだけです。
しかしキャッチがあります。QQuickRectangle
自体はプライベートクラスなので、C++ APIで直接使用することはできません。また、実際にはclicked()
シグナルを持っていません。もしそうしたとしても、C++インターフェイスの一部にはなりません。
また、信号はであり、onClicked:
はハンドラフックである。
しかし、あなたはまだそれだけで使い、Qtのメタシステムを使用して放出することができます。
QObject * object = engine.rootObjects().at(0)->findChild<QObject *>("yourObjectName");
if (object) QMetaObject::invokeMethod(object, "clicked");
それは信号がQML側に実装されている場合でも、それも、コンクリートにキャストせずに動作します動作しますC++型。
オブジェクトがルートオブジェクトツリーに直接存在しない場合は、そのオブジェクトを見つけることができず、QML側からC++スロットまたは呼び出し可能な関数への参照を渡すしかありません。
関連する問題
- 1. Qt5/PyQt5:QMLフロントエンドとPythonバックエンドを持つカスタムQMLコンポーネント
- 2. QMLのレイアウトにアクセスするには?
- 3. QMLからenumにアクセスするには?
- 4. 動的に作成QMLコンポーネント
- 5. QMLコンポーネントの親とは別に親コンテキストを設定する
- 6. コントロールからQML StackViewにアクセス
- 7. リストビューの外でQMLのQSortFilterProxyModel要素にアクセスするには
- 8. QML:コンポーネントのローカルプロパティによって名前がシャドーされている場合、コンテキストプロパティにアクセスする方法は?
- 9. laravelのサブドメインからバックエンドにアクセスする
- 10. qml要素の相対位置をメインウィンドウにアクセスするには
- 11. C++から動的に作成されたQMLオブジェクトへのアクセス
- 12. QMLコンポーネントでC++クラスを使用する方法
- 13. コンポーネントのFacebookデータにアクセスするには?
- 14. Reactコンポーネントのhistory.listenにアクセスするには?
- 15. QML動的コンポーネントの作成
- 16. コンポーネントBのコンポーネントAのプロパティにアクセスするには?
- 17. QMLのコンポーネントとインスタンシエータの違いは?
- 18. QMLでリピータの子供のプロパティにアクセスする方法は?
- 19. QMLはQMLに++クラスCを接続します。私は私のC++のクラスにQMLのアイテムのリストを送信するつもりですM16エラー
- 20. バックエンドからフロントエンドファイルにアクセスする方法
- 21. QMLのデリゲート内のmodelDataにアクセス
- 22. 同じコンポーネント内の他のバインディングに依存するQMLプロパティバインディング
- 23. 親コンポーネントExtJSにアクセスするには?
- 24. QTのjavascriptからQMLキャンバスにアクセス
- 25. 他のC#フォームのコンポーネントにアクセスする際の問題
- 26. QMLアプリケーションとQML/C++アプリケーション
- 27. C++とQML:接続QML信号C++スロット
- 28. QMLにC++クラスを公開
- 29. コンポーネント内のコンポーネント内のコンポーネントのテンプレート内のフィールドにアクセスする
- 30. cppコードを使用して、ロードされたqmlからqmlオブジェクトにアクセスする
私はinvokeMethodからQML onPropertyNameChanged()のスロットを呼び出そうとしましたが、それは処理していないと思います。シグナルは呼び出すことしかできません。 – Ashif
@Ashif - このようなオブジェクトはありません。 'onSignalName' - これは宣言的な接続を行うために提供されたアシストです。呼び出すことはできません。 – dtech