是否可以调用静态方法?
我正在使用:
QMetaObject::invokeMethod(this
,strThread.toLatin1()
,Qt::DirectionConnection
,Q_ARG(clsThread*, this));
这行得通,但是我想调用静态方法,但行不通,是否可以调用静态方法?
我试过分配给 strThread: "clsScriptHelper::threadFun"
,但这不起作用。
我无法使静态方法起作用,因此我实现了替代解决方案。在我的派生线程类中,我添加了一个具有以下类型的成员:
QObject* mpobjClass;
然后我添加了一个方法来设置它:
void setClassPtr(QObject* pobjClass) { mpobjClass = pobjClass;
我的调用现在看起来像这样:
QMetaObject::invokeMethod(mpobjClass
,strThread.toLatin1()
,Qt::DirectConnection
,Q_ARG(clsThread*, this));
这对我有用。
最佳答案
是的,您可以,但是该方法必须被注释为可调用 即Q_INVOKABLE
参见what qt documented about it...
Foo obj;
QMetaObject::invokeMethod(&obj, "amSomething", Qt::DirectConnection);
Foo 应该是这样的:
class Foo : public QObject
{
Q_OBJECT
public:
explicit Foo(QObject *parent = nullptr);
Q_INVOKABLE static void amSomething(){ qDebug() << "am in static";}
signals:
public slots:
};
关于c++ - Qt invokeMethod 和调用静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54746675/