Qt/C++ 将静态方法的参数传递给类方法



是否有办法将静态方法的参数传递给类方法?
我试过这样使用QTimer:

QTimer g_timer;
QString g_arg;
void staticMethod(QString arg)
{
g_arg = arg;
g_timer.start(1); // It will expire after 1 millisecond and call timeout()
}
MyClass::MyClass()
{
connect(&g_timer, &QTimer::timeout, this, &MyClass::onTimerTimeout);
this->moveToThread(&m_thread);
m_thread.start();
}
MyClass::onTimerTimeout()
{
emit argChanged(g_arg);
}

但是我有线程错误,因为staticMethod是从Java活动调用的,所以线程不是QThread。

错误如下:

QObject::startTimer: QTimer can only be used with threads started with QThread

如果g_timer不是指针,或者

QObject::startTimer: timers cannot be started from another thread

如果g_timer是一个指针并且我在MyClass构造函数中实例化了它

任何建议吗?谢谢你

在这个特定的实例中,您可以使用QMetaObject::invokeMethod通过跨线程QueuedConnection发送消息:

QMetaObject::invokeMethod(&g_timer, "start", Qt::QueuedConnection, Q_ARG(int, 1));

这将传递一个事件到拥有start方法的线程,而不是当前(非qt)线程。

相关内容

  • 没有找到相关文章

最新更新