QObject L'Héritage Multiple

Je suis en train d'utiliser le mélange dans les classes en C++/Qt pour fournir tout un tas de widgets avec une interface commune. L'interface est définie de telle manière que si elle est définie comme la classe de base pour d'autres widget classes, puis le widget eux-mêmes de ces signaux. ie reportez-vous ci-dessous.

class SignalInterface: public QObject {
    Q_OBJECT

    public:
    SignalInterface();
    virtual ~SignalInterface();

    signals:
    void iconChanged(QIcon);
    void titleChanged(QString);
}

class Widget1: public SignalInterface, QWidget{

    public:
    Widget1()
    virtual ~Widget1()

    //The Widget Should Inherit the signals
}

À la recherche à la hiérarchie de classe le problème devient évident, j'ai trébuché sur le redoutable diamant dans l'Héritage Multiple, où la Widget1 hérite de QWidget, et SignalInterface, et les deux qui hérite de QObject. Cela peut-il poser des problèmes?

Nous savons que ce problème peut être facilement résolu si la classe QObject est virtuelle pure (qui n'est pas le cas).

Une solution possible serait

class Interface: public QWidget {
Q_OBJECT

signals:
void IconChanged(QIcon);
void titleChanged(QString);
}

class Widget1: public Interface {

}

Ici, le problème est que j'ai déjà beaucoup de code qui hérite de QWidget, et de sa douloureuse pour les adapter dans. Est-il une autre voie?

  • Regardez: stackoverflow.com/questions/17943496/...
  • J'ai rencontré ce problème et je viens d'ajouter un émetteur de signaux en tant que membre de base de l'interface à la place de sa classe de base.
InformationsquelleAutor Anonymous | 2011-12-20