2016-03-29 7 views

答えて

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++スロットまたは呼び出し可能な関数への参照を渡すしかありません。

+0

私はinvokeMethodからQML onPropertyNameChanged()のスロットを呼び出そうとしましたが、それは処理していないと思います。シグナルは呼び出すことしかできません。 – Ashif

+0

@Ashif - このようなオブジェクトはありません。 'onSignalName' - これは宣言的な接続を行うために提供されたアシストです。呼び出すことはできません。 – dtech

関連する問題