gpt4 book ai didi

c++ - 虚拟Qt信号?

转载 作者:IT老高 更新时间:2023-10-28 22:19:03 26 4
gpt4 key购买 nike

在查看一些 Qt C++ 代码时,我发现了这个:

class Foo
{
Q_OBJECT

signals:
virtual void someSignal(const QString& str, int n)
{
Q_UNUSED(str);
Q_UNUSED(n);
}
...
};

现在,Qt 信号不能有主体,所以我很惊讶这甚至可以编译(也许是因为主体实际上是空的)。我也没有看到将信号设为虚拟的意义......它不能有实体,那么如何覆盖它?

我在这里遗漏了什么,还是这是一种有效的代码味道?

最佳答案

这对我来说看起来很臭。

在基类中声明一个信号然后从派生类中发出它是有效的,例如

class MyBase : public QObject
{
Q_OBJECT
// ...
signals:
void somethingHappened();
};

class MyDerived : public MyBase
{
Q_OBJECT
// ...
void doSomething();
};

void MyDerived::doSomething()
{
// ....
emit somethingHappened();
}

也许这就是问题中声明的目的。

关于c++ - 虚拟Qt信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3667788/

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