Qt中的多重继承

Ank*_*wat 1 c++ linux qt qt4

如何也继承 QLabel 和 QPushButtonton,我尝试的显示错误消息

/home/test.cpp:206: error: reference to 'setText' is ambiguous
      setText(text);
      ^
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

class virtualLabel: virtual public QLabel
{
    Q_OBJECT
public:
    explicit virtualLabel(const QString& text="", QWidget* parent=0){}
    ~virtualLabel(){}

};

class virtualPushButton: virtual public QPushButton
{
    Q_OBJECT
public:
    explicit virtualPushButton(const QString& text="", QWidget* parent=0){}
    ~virtualPushButton(){}

};



class customLabel : public virtualLabel, public virtualPushButton
{
    Q_OBJECT
    // Q_DECLARE_INTERFACE
    //Q_INTERFACES(YourInterface OtherInterface)


public:
    explicit customLabel(const QString& text="", QWidget* parent=0);
    ~customLabel();

    QString folderName;

};
Run Code Online (Sandbox Code Playgroud)

任何帮助表示感谢谢谢

CJC*_*ink 5

你没有。

除了含糊不清的问题之外,您还会遇到更多问题。

从关于moc的 Qt 文档:

支持QObject 的虚拟继承。

(相信他们)

而是使用组合并公开您需要的信号、槽和函数。

class customLabel : public QWidget
{
    Q_OBJECT
public:
    explicit customLabel(const QString& text="", QWidget* parent=0);
    ~customLabel();
protected:
    QPushButton* button;
    QLabel* label;
};
Run Code Online (Sandbox Code Playgroud)