Qt 使用 QMetaObject 调用无参数函数
使用 QMetaObject::invokeMethod 函数可以通过函数名称调用一个对象的无参数函数。以下是一个示例代码:
#include <QtCore>
class MyClass : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE void myFunction()
{
qDebug() << 'myFunction called';
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyClass obj;
QMetaObject::invokeMethod(&obj, 'myFunction');
return a.exec();
}
#include "main.moc"
在这个例子中,我们定义了一个名为 MyClass 的 QObject 子类,并在其中声明了一个无参数的 Q_INVOKABLE 函数 myFunction。在 main 函数中,我们创建了一个 MyClass 对象,并使用 QMetaObject::invokeMethod 函数调用了 myFunction 函数。运行程序后,会输出'myFunction called'。
需要注意的是,在使用 QMetaObject::invokeMethod 调用函数时,函数名称是字符串,因此需要确保函数名称的正确性。同时,被调用的函数需要在 QObject 的子类中声明为 Q_INVOKABLE,以使得 QMetaObject 能够找到该函数。
原文地址: https://www.cveoy.top/t/topic/p7DU 著作权归作者所有。请勿转载和采集!