如何在接口中定义信号?
class ISomeInterface
{
signals:
virtual void added(const QString& id) = 0;
virtual void removed(const QString& id) = 0;
// bla, other methods
}
Afaik,信号不应该是虚拟的,但是如果我想定义一个信号需要在实现接口的类中实现=>怎么做?或者你只是让它们非抽象......但接口在这里没有 Q_OBJECT 声明!在这种情况下是否生成了正确的代码?最重要的是...如果要连接到信号,则需要将错误的 (f* * *g) 强制转换为 QObject。
class ISomeInterface
{
signals:
void added(const QString& id);
void removed(const QString& id);
// bla, other methods
}
还是您尝试以这种方式实现它?
class ISomeInterface : public QObject
{
Q_OBJECT
signals:
void added(const QString& id);
void removed(const QString& id);
// bla, other methods
}
Q_DECLARE_INTERFACE(ISomeInterface, "ISomeInterface")
.. 但是这样我只能从一个接口继承(QObject 不支持多重继承)。
结论:正如建议的那样,我会选择第一个。