【发布时间】:2011-03-23 10:27:38
【问题描述】:
由于 QObject,我在使用 QT 时遇到了关于多重继承的问题。我知道很多其他人也有同样的问题,但我不知道该如何解决。
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()))
我会得到错误:
QObject' 是 'MainMenuOption' 的模棱两可的基础
我之所以让 NavigatableItem 从 QObject 继承是因为信号。有没有办法做到这一点?
编辑:
为每个继承声明添加 virtual,仍然给我同样的错误:
class NavigatableItem : public virtual QObject
class Button : public virtual NavigatableItem, public virtual QToolButton
class MainMenuOption : public virtual Button
即使在“clean all”、“run qmake”和“build all”之后。
【问题讨论】:
-
你不能从多个 QObject 子类继承。 QObject只能是其中一个,并且必须是列表中的第一个。
-
尝试删除那些
moc_*,*.obj文件并重新构建所有文件.. -
查看更新的问题。重建并没有解决它。
标签: c++ qt multiple-inheritance qt-signals