gpt4 book ai didi

c++ - Qt invokeMethod 和调用静态方法?

转载 作者:行者123 更新时间:2023-11-28 01:24:05 25 4
gpt4 key购买 nike

是否可以调用静态方法?

我正在使用:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com