我正在尝试实现自定义窗口小部件层次结构:
QMainWindow-> QFrame-> MyWidget-> QFrame-> MySubWidget
这是MyWidget类的样子:

    class MyWidget : public QWidget {
        Q_OBJECT
    public:
        MyWidget(QWidget *parent = 0, ...);
        ...
    public slots:
        void SlotFunction(int i);
        ...
    private:
        MySubWidget *sub_w;
        QFrame *sub_frame;
        ...
    }

如果我尝试在MyWidget构造函数期间创建MySubWidget,则所有MySubWidget元素均按预期显示:
    MyWidget::MyWidget (...) : QWidget(parent) {
        ...
        sub_frame = new QFrame(this);
        ...
        sub_w = new MySubWidget(sub_frame); // commented out on a runtime test
    }

但是,如果我尝试在运行时添加subwidget,sub_frame仍为空白。即信号反应:
    void MyWidget::SlotFunction(int i) {
        sub_w = new MySubWidget(sub_frame); // update, repaint, show and hide methods aren't helphul
    }

最佳答案

我知道这是一个老问题,但是我遇到了一个非常相似的问题,结果是缺少对QWidget::show()的调用。也许那也是您的问题?

我的问题在这里:Dynamically add instance inherited from QWidget

干杯。

10-07 19:25