gpt4 book ai didi

qt - qt继承的信号不会到达插槽

转载 作者:行者123 更新时间:2023-12-03 13:16:22 31 4
gpt4 key购买 nike

这是我的问题的代码

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/

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