QML中如何查找嵌套的qml对象,然后调用QML的方法
程序员文章站
2022-03-09 16:15:13
...
一、前言
我们一般开发QML界面,不会将整界面写在一个QML文件中,会将一个界面拆分成多个QML文件,主界面一般使用小写开头的名字(否则可能加载不出来),本文介绍使用QQuickWidget加载QML以后,多个QML文件嵌套以后,如何在QT中找到单个的QML对象,然后进行方法的调用
void qtInvokeQml()\
{
m_quickView = new QQuickWidget(/*父类自己给*/)
// 1.只有一个根qml的方法调用
QMetaObject::invokeMethod(m_quickView->rootObject(),
"qmlFunction",
Q_ARG(QVariant, str));
// 2.rectangleObj是qml中设定的objectName,和id类似
// 这种写法适合于嵌套的QML的查找
QQuickItem *item = m_quickView->rootObject()->
findChild<QQuickItem*>("rectangleObj");
if (item == nullptr) {
return;
}
// "qmlFunction" 是qml中的方法
// str是这个方法的参数,类型必须为QVariant
QMetaObject::invokeMethod(item,
"qmlFunction",
Q_ARG(QVariant, str));
}
下一篇: Android MVP模式浅析