私の質問は、例によって最も明確になります。私はアイテムでQMLを持っていText{}
ます。C++ では、この項目に到達でき、問題なく使用qobject_cast
して何かをQQuickItem*
. setText()
しかし、それを最も近い対応するアイテムに変換して、より具体的なメソッドを呼び出すのと同じように直接呼び出すにはどうすればよいsetWidth()
でしょうか? 一般的な setProperty() メソッドを使用できることはわかっていますが、コンパイル時にキャストが提供されていることを確認しています。
Rectangles、MenuBarsなどでこれを行う方法を見つけることができるように、QMLとそのC++クラスの間の対応を見つけるためのより一般的な答えを求めています。ドキュメントでこれを見つけることができないようです。コード例を好む人のために:
auto text_object = app_item->findChild<QObject*>("myTextArea");
text_object->setProperty("text","New Text set from Code"); //THIS WORKS BUT...
auto text_qitem = qobject_cast<QQuickItem*>(text_object);
text_qitem->setWidth(128);
auto text_quick_text = qobject_cast<WHATGOESHERE???*>(text_object);
text_quick_text->setText("new Text for qml item"); //I WANT TO DO THIS