将小部件添加到布局仅在自定义类的构造函数中有效

离开迈耶

我有一个类MainWindow子类化QMainWindow。作为中央窗口小部件,我有一个内部带有QWidget的QScrollArea,作为我自己的自定义窗口小部件的容器。我将QVBoxLayout设置为QWidget容器的布局,并将此布局传递给我的自定义类的构造函数,该构造函数应动态创建我的自定义小部件类的实例并将其添加到布局中。

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = Q_NULLPTR);
    virtual ~MainWindow ();
private:
    QVBoxLayout mainLayout;
    QScrollArea scrollArea;
    QWidget container;
    NotificationControl control;
};

MainWindow::MainWindow (QWidget *parent) :
    QMainWindow(parent),
    container(&scrollArea),
    control(&mainLayout) {
    container.setLayout(&mainLayout);
    scrollArea.setWidget(&container);
    setCentralWidget(&scrollArea);
}

现在在我的NotificationControl类中,有一个方法addNotification:

void NotificationControl::addNotification (Notification notif) {
    qDebug() << "NotificationControl addNotification" << notif.get_app_name();
    NotificationWidget* widget = new NotificationWidget(notif);
    container->addWidget(widget);
}

调用此方法时,我得到了调试输出,但是没有任何内容添加到布局中。但是如果我将其添加到NotificationControl的构造函数的末尾...

NotificationWidget* notif = new NotificationWidget(Notification());
container->addWidget(notif);

...由于某种原因它起作用了。我很确定问题不是NotificationWidget类。为了进行测试,我进行了一些更改,它实际上并没有使用通过的Notification对象。

可能是什么问题呢?

编辑:我只是注意到以后再添加小部件(不在构造函数中)会使在构造函数中添加的小部件消失。

库巴并没有忘记莫妮卡

如果父窗口小部件已经可见,则必须显式显示添加为子窗口小部件的任何窗口小部件。通常,在显示父窗口小部件之前先添加子窗口小部件,然后它们自己也将变为可见。但是,如果以后添加它们,则必须使它们显式可见。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Qt如何将自定义小部件添加到垂直布局以占用最少的垂直空间(自定义小部件之间没有空间)

PySide:如果我将具有其自己布局的自定义窗口小部件添加到父窗口小部件的布局,则它具有偏移量。是什么原因造成的?

将自定义参数添加到小部件

将自定义 CSS 类添加到 Fluid 小部件分页

PyQt4将派生自另一个自定义小部件的自定义小部件添加到布局

将当前日期添加到“自定义小部件”字段

是否可以将 sitefinity 小部件添加到我的自定义小部件中?

动态地将自定义qt小部件添加到框架中,而无需每次更改布局

将项目添加到自定义组件的布局

将RichText添加到自定义多字段窗口小部件在cq5中无法正常工作

使用 Qt Creator 中设计的自定义小部件将页面动态添加到 QStackedWidget

如何将点击处理程序添加到自定义jQuery UI小部件并在处理程序中使用小部件的属性?

Flutter-如何制作一个自定义小部件,以将页脚添加到接收到的可滚动小部件中?

SyntaxError:super()仅在派生类构造函数中有效

将自定义js文件添加到R html小部件输出?

在运行时将自定义窗口小部件添加到屏幕

将自定义库添加到ArcGIS Web AppAbuilder中的窗口小部件

将自定义悬停功能添加到jQuery小部件

将自定义 Netlify CMS 小部件添加到 Gatsby starter Yellowcake

将小部件添加到从 .ui 文件创建的布局

将 Flutter 小部件添加到 FirebaseAnimatedList 上方的布局

将子视图添加到自定义类

将自定义函数添加到 Python 中的现有类

将自定义键/值添加到JWT令牌有效负载或具有密钥斗篷的用户

为什么将类添加到按钮仅在第二次单击后有效?

将类添加到具有匹配的自定义数据属性的元素

向自定义小部件类 Flutter 添加内容

Django 小部件 - 将类添加到字段

Qt 3-将小部件添加到已存在的小部件及其布局