这是我的问题的代码
class Base : QThread
{
Q_OBJECT
virtual void run() = 0;
signals:
void Ping(int);
};
class Derived : public Base
{
void run()
{
emit Ping(42);
}
}
signal(42)将无法到达/调用插槽。怎么了?
提前致谢。
最佳答案
做了100次,它确实起作用。您确定您的基类正确进行了MOC吗? (即在.pro
的HEADERS部分中包含的文件中定义)。此外,在连接信号时,请检查QObject::connect
的返回状态(这是一个 bool 值)。好的做法是这样的
bool r=false;
r=QObject::connect(pObj1,SIGNAL(signalStuff()),pObj2,SLOT(gotStuff()));
Q_ASSERT(r);
正如Liz所注意到的,如果
connect
中出了点问题,您可以检查跟踪以了解发生了什么。我还可以注意:
run
,它已经由QThread QThread
的共同陷阱:基类和派生类属于创建它们的线程,而不是在新创建的线程;
编辑:
编辑以考虑到liz的有趣评论。
关于qt - qt继承的信号不会到达插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6247703/