在查看一些 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/