Множественное наследование Qt и сигналы

У меня проблема с 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()))

, я получу ошибку:

QObject 'является неоднозначным основанием' MainMenuOption '

Причина, по которой я позволяю NavigatableItem наследовать от QObject из-за сигналов. Есть ли способ сделать это?

Edit:

Добавление virtual к каждому объявлению наследования по-прежнему дает мне ту же ошибку:

class NavigatableItem : public virtual QObject

class Button : public virtual NavigatableItem, public virtual QToolButton

class MainMenuOption : public virtual Button

Даже после «очистить все», «запустить qmake» и «построить все» .

7
задан Louis Langholtz 25 April 2018 в 13:09
поделиться