我在使用QT时遇到了关于多重继承的问题,由于QObject的存在。我知道很多人也遇到了同样的问题,但是我不知道应该如何解决。
class NavigatableItem : public QObject
{
Q_OBJECT
signals:
void deselected();
void selected();
void activated();
};
class Button : public NavigatableItem, public QToolButton
{
Q_OBJECT
...
}
class MainMenuOption : public Button
{
Q_OBJECT
...
}
当我这样做时
MainMenuOption* messages = new MainMenuOption();
connect(messages, SIGNAL(selected()), SLOT(onMenuOptionSelected()))
我会遇到以下错误:
'MainMenuOption'的'QObject'是一个模糊的基类
我让NavigatableItem从QObject继承是因为信号。有没有办法解决这个问题?
编辑:
在每个继承声明中添加virtual关键字,仍然会给出相同的错误:
class NavigatableItem : public virtual QObject
class Button : public virtual NavigatableItem, public virtual QToolButton
class MainMenuOption : public virtual Button
即使进行了“清除所有”、“运行qmake”和“构建所有”操作后,仍然存在问题。
moc_*
,*.obj
文件,并进行整体重建。 - liaK