我的问题最好通过一个例子来澄清。我有一个Text{}
项目的 QML。在 C++ 中,我可以访问该项目,并且我可以毫无问题qobject_cast
地将任何内容转换为QQuickItem*
. 但是我如何将它变成最接近的对应项,以便我可以像setText()
调用相同的方式直接调用更具体的方法setWidth()
?我意识到我可以使用通用的 setProperty() 方法,但我在编译时检查了转换提供的功能。
我正在寻找一个更一般的答案来查找 QML 与其 C++ 类之间的对应关系,以便我可以找到如何为 Rectangles、MenuBars 等执行此操作。我似乎在文档中找不到这个。对于那些喜欢代码示例的人:
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