相关疑难解决方法(0)

QObject多重继承

我试图在C++/Qt的类中使用mix来提供一大堆具有通用接口的小部件.接口以这样的方式定义,以便如果将其定义为其他窗口小部件类的基类,则窗口小部件本身将具有这些信号.即参考下文.

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
}
Run Code Online (Sandbox Code Playgroud)

看看类层次结构问题变得明显,我偶然发现了多重继承中的可怕钻石,其中Widget1继承自QWidget和SignalInterface,两者都继承自QObject.这会引起任何问题吗?

我们知道,如果QObject类是纯虚拟的,那么这个问题很容易解决(事实并非如此).

一个可能的解决方案是

class Interface: public QWidget {
Q_OBJECT

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

class Widget1: public Interface {

}
Run Code Online (Sandbox Code Playgroud)

这里的问题是我已经拥有了许多从QWidget继承的代码,并且很难将其破解.还有其他方法吗?

c++ user-interface qt

41
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×1

qt ×1

user-interface ×1