Qt Mehrfachvererbung und Signale

Ich habe ein problem mit QT zu mehreren enheritance, weil von QObject. Ich weiß, dass viele andere die gleichen Probleme haben, aber ich weiß nicht wie ich es beheben sollte.

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

    ...
}

Wenn ich dies tun

MainMenuOption* messages = new MainMenuOption();
connect(messages, SIGNAL(selected()), SLOT(onMenuOptionSelected()))

Bekomme ich die Fehlermeldung:

QObject' ist ein Mehrdeutiger Basis von 'MainMenuOption'

Der Grund, warum ich lassen Sie NavigatableItem enherit von QObject, weil die Signale. Gibt es eine Möglichkeit, dies zu tun?

Edit:

Hinzufügen von virtuellen zu jeder inheritence Erklärung, gibt mir immer noch den gleichen Fehler:

class NavigatableItem : public virtual QObject

class Button : public virtual NavigatableItem, public virtual QToolButton

class MainMenuOption : public virtual Button

Sogar nach einer 'sauber', 'run qmake' und 'bauen'.

  • Sie können nicht Erben aus mehreren QObject Unterklassen. Nur einer von Ihnen kann ein QObject ist, und es muss die erste in der Liste.
  • Versuchen Sie das löschen dieser moc_*,*.obj Dateien und haben Alles neu erstellen..
  • Siehe aktualisierte Frage. Wiederaufbau trifft nicht zu beheben.
InformationsquelleAutor RvdK | 2011-03-23
Schreibe einen Kommentar