invokeMethod 是Qt元对象系统中的一个函数,用于程序运行时动态的调用对象的槽函数或者静态函数。
bool QMetaObject::invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument(), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument())
obj:要调用函数的对象指针。member:要调用的函数名,以字符串形式表示。type:连接类型,用于指定函数的调用方式。ret:返回值类型,用于指定函数的返回值类型。val0 ~ val9:函数的参数列表。- #include
- #include
- #include
-
- class MyClass : public QObject
- {
- Q_OBJECT
- public slots:
- void mySlot(int value)
- {
- qDebug() << "Received value:" << value;
- }
- };
-
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- MyClass obj;
- int value = 88;
- QMetaObject::invokeMethod(&obj, "mySlot", Qt::AutoConnection, Q_ARG(int, value));
- return a.exec();
- }
测试中,使用 QMetaObject::invokeMethod 函数来调用 obj 对象的 mySlot 槽函数,并传递 value 作为参数。当程序运行时,mySlot 槽函数会被调用,并输出 “Received value: 88” 的信息。
注意!使用 QMetaObject::invokeMethod 函数时,需要确保对象的元对象信息已经注册,即对象所在的类需要使用 Q_OBJECT 宏进行声明。