Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何从C++;?_Qt_Qml_Qquickitem - Fatal编程技术网

Qt 如何从C++;?

Qt 如何从C++;?,qt,qml,qquickitem,Qt,Qml,Qquickitem,我在main.qml中定义了以下QQuickItem Flickable { id: my_quick Accessible.name: "my_quick_item_name" objectName: "myquickitem" enabled: true property real quickProperty: 1.0 } 我通过以下方式在C++端获得my_quick对象 QQuickItem * my_quick_ptr = QmlEngine_Ptr->ro

我在
main.qml
中定义了以下
QQuickItem

Flickable {
  id: my_quick
  Accessible.name: "my_quick_item_name"
  objectName: "myquickitem"
  enabled: true

  property real quickProperty: 1.0
}
我通过以下方式在C++端获得
my_quick
对象

QQuickItem * my_quick_ptr = QmlEngine_Ptr->rootObjects()[0]->findChild<QQuickItem*>("myquickitem");
QQuickItem*my\u quick\u ptr=QmlEngine\u ptr->rootObjects()[0]->findChild(“myquickitem”);

< > >强> > < <强> >代码> > />代码> C++,使用<代码> MyOyQuyGypRT < /P> > P > >如果你是QML属性,你可以使用这种方法:

QQmlProperty::read(my\u quick\u ptr,“quickProperty”).toReal()

使用
QObject
的工具也应适用于QML属性:

my\u quick\u ptr->property(“quickProperty”).toReal()

另外,
findChild
返回一个
QObject
,因此您需要执行安全转换以从中获取派生指针:

QQuickItem * my_quick_ptr = qobject_cast<QQuickItem *>(QmlEngine_Ptr->rootObjects()[0]->findChild<QQuickItem*>("myquickitem"));
if (my_quick_ptr) // successfully found and cast, can be safely used
QQuickItem*my\u quick\u ptr=qobject\u cast(QmlEngine\u ptr->rootObjects()[0]->findChild(“myquickitem”);
if(my_quick_ptr)//成功找到并施放,可以安全使用

谢谢,您能否将您的答案与我问题中的示例代码联系起来?我使用的
qreal
对象名为
myquickitem
&属性名为
quickProperty