由於QObject,我在QT中遇到了關於多重繼承的問題。我知道很多其他人也有同樣的問題,但我不知道該如何解決。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' is an ambiguous base of 'MainMenuOption'
我之所以讓因爲信號的自QObject NavigatableItem enherit。有沒有辦法做到這一點?
編輯:
添加虛擬到每個的傳承聲明,仍然給我相同的錯誤:
class NavigatableItem : public virtual QObject
class Button : public virtual NavigatableItem, public virtual QToolButton
class MainMenuOption : public virtual Button
即使在一個「乾淨所有」,「運行的qmake」和「建立所有」 。
不能從多個繼承QObject子類。其中只有一個可以是QObject,它必須是列表中的第一個。 – 2011-03-23 10:47:14
嘗試刪除這些'moc_ *','* .obj'文件並重建所有文件。 – liaK 2011-03-23 11:58:18
查看更新後的問題。重建沒有解決它。 – RvdK 2011-03-23 13:38:04