在查看一些 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();
}
也许这就是问题中声明的目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)