C++调用qml函数,是通过下面的函数实现的:
bool QMetaObject::invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericReturnArgument ret, <br>QGenericArgument val0 = QGenericArgument( Q_NULLPTR ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(),<br> QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(),<br> QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument());
这里有两个常用的宏:Q_RETURN_ARG,Q_ARG,从字面意思就可以看出来,一个是用来获取返回值,另一个用于传参。 下面是一个例子:
QVariant returnedValue;
QVariant msg = "message sended from C++";
QMetaObject::invokeMethod(pctrlobj, "setTextString", Q_RETURN_ARG(QVariant, returnedValue),Q_ARG(QVariant, msg));
在应用该函数调用qml对象成员前,关键是要获取到要调用的qml对象,有两种方案可以很方便的获取到qml对象:</

本文介绍了如何在C++中调用QML的函数,重点讲述了通过Q_RETURN_ARG和Q_ARG宏来处理返回值和参数。文章提供了一个实例,详细说明了如何通过设置objectName并在C++中使用findChild()找到并调用QML对象的方法。
最低0.47元/天 解锁文章
1070

被折叠的 条评论
为什么被折叠?



