sit*_*eal 1 inheritance qt multithreading signals-slots
这是我的问题的代码
class Base : QThread
{
Q_OBJECT
virtual void run() = 0;
signals:
void Ping(int);
};
class Derived : public Base
{
void run()
{
emit Ping(42);
}
}
Run Code Online (Sandbox Code Playgroud)
信号(42)不会到达/呼叫插槽.怎么了?提前致谢.
这样做了100次,确实有效.你确定你的基类是正确的MOC吗?(即在HEADERS部分中包含的文件中定义.pro)同样在连接信号时,检查返回状态QObject::connect(它是一个布尔值).一个好的做法是这样的
bool r=false;
r=QObject::connect(pObj1,SIGNAL(signalStuff()),pObj2,SLOT(gotStuff()));
Q_ASSERT(r);
Run Code Online (Sandbox Code Playgroud)
正如Liz所注意到的,如果你的问题出了问题connect,你可以检查一下痕迹,知道发生了什么.
我还可以注意到:
run在基类中重新定义,它已由QThread定义QThread:基类和派生类属于创建它们的线程,而不是新创建的线程;编辑:
编辑考虑到liz'有趣的评论.