在回顾一些Qt C++代码时,我遇到了这个问题:
class Foo
{
Q_OBJECT
signals:
virtual void someSignal(const QString& str, int n)
{
Q_UNUSED(str);
Q_UNUSED(n);
}
...
};
Run Code Online (Sandbox Code Playgroud)
现在,Qt信号不能有一个身体所以我很惊讶这甚至编译(也许是因为身体实际上是空的).我也没有看到将信号虚拟为......它不能有一个身体所以它怎么能被覆盖?
我在这里遗漏了什么,或者这是一个有效的代码味道?
Gar*_*ell 17
这看起来很臭我.
在基类中声明信号然后从派生类中发出信号是有效的,例如
class MyBase : public QObject
{
Q_OBJECT
// ...
signals:
void somethingHappened();
};
class MyDerived : public MyBase
{
Q_OBJECT
// ...
void doSomething();
};
void MyDerived::doSomething()
{
// ....
emit somethingHappened();
}
Run Code Online (Sandbox Code Playgroud)
也许这就是问题中的声明要达到的目的.
归档时间: |
|
查看次数: |
11251 次 |
最近记录: |