(QMLではなく、C++で定義されている)QMLタイプ考えてみましょう:のQt:どのようにCからチェックする++オブジェクトがQML型であるかどうかはFoo
Foo {
}
を私はC++でQQuickItem* item
変数を持っていると仮定します。 変数がFoo型であるかどうかを確認するにはどうすればよいですか?
はfooがC++タイプだった場合、私はこれを行うことができます:
qobject_cast<Foo*>(item) == nullptr
をfooがQMLタイプですので、一つの選択肢は
item->metaObject()->className().beginsWith("Foo")
(className()
戻りFoo_QMLTYPE_0
のようなものを)
しかし、それは信頼できないとハックです。
私は、 'objectName'をマジックキーとして使用するようアドバイスしました。この場合、 'obj-> objectName'でアクセスできますし、' rootItem-> findChild( "myObjectName") 'を使って項目を見つけることもできます。 –
folibis
@ddriver:ありがとう、ええ、私はあなたの 'isFoo'ソリューションを現在使用していますが、私はもっとクリーンなものを好むでしょう。私はそれが "派生"されたオブジェクトに対してもうまくいくのが好きです。私の場合は問題ではないが、オーバーヘッドについての有用なメモ。 –
@folibis: 'objectName'は、私が1つのオブジェクトだけを探したい場合に機能します。私は、同じタイプのアイテムをたくさん見つけたいと思っています。 –