我是 Qt 和 C++ 的新手,我正在尝试制作一个运行两个子线程 threadA 和 threadB 的程序。两个线程都是在 main.cpp 中创建的,如下所示:
ThreadA threadA;
threadA.start();
ThreadB threadB;
threadB.start();
然后这两个线程独立运行。我需要使线程A 能够调用线程B 中的方法,在进程中将数据作为参数传递。我尝试使用信号和插槽,将其添加到我的 main.cpp 中:
QThread::connect(&threadA, SIGNAL(mySignal(uint)),
&threadB, SLOT(mySlot(uint)));
其中 threadA::mySignal(uint) 用于:
//a.h
signals:
void mySignal(unsigned int blah);
//a.cpp
emit mySignal(42);
并且 threadB::mySlot(uint) 在 b 中:
//b.h
public slots:
void mySlot(unsigned int fluff);
//b.cpp
void threadB::mySlot(unsigned int fluff)
{ doStuff(fluff); ... }
该程序编译并成功运行,但我在调试日志中收到来自 QObject 的消息:
QObject::connect: No such slot QThread::mySlot(uint) in ../Project/main.cpp:42
这意味着编译器正在 QThread 而不是 threadB 中查找 mySlot。谁能告诉我这里哪里出错了?任何帮助将不胜感激,如果需要,我可以提供更多细节。