以下是我可以提出的最小示例。

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QVBoxLayout *vLayout = new QVBoxLayout(this);

    QGroupBox *gb = new QGroupBox;
//    MyGroupBox *gb = new MyGroupBox;
    vLayout->addWidget(gb);

    QPushButton *btB = new QPushButton;
    vLayout->addWidget(btB);
}

c++ - 使用派生的Qt小部件类时的父问题(?)-LMLPHP

上面的代码产生上面的图像,它只是一个组框和一个垂直布局的按钮。

如果我将QGropBox替换为MyGroupBox,则不再显示。下面的代码产生下面的图像。
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QVBoxLayout *vLayout = new QVBoxLayout(this);

//    QGroupBox *gb = new QGroupBox;
    MyGroupBox *gb = new MyGroupBox;
    vLayout->addWidget(gb);

    QPushButton *btB = new QPushButton;
    vLayout->addWidget(btB);
}

c++ - 使用派生的Qt小部件类时的父问题(?)-LMLPHP

其中mygroupbox.h(.cpp文件中的构造函数主体为空):
#include <QWidget>

class MyGroupBox : public QWidget
{
    Q_OBJECT
public:
    explicit MyGroupBox(QWidget *parent = 0);

signals:

public slots:

};

为什么组框未显示在其中?如何使它出现?

最佳答案

这就是为什么它不出现的原因:

class MyGroupBox : public QWidget

您的“组框”基本上只是一个QWidget。而是从QGroupBox继承。

07-24 14:35