gpt4 book ai didi

c++ - Qt 创建者 : Widget is not added to layout

转载 作者:太空宇宙 更新时间:2023-11-04 13:51:25 24 4
gpt4 key购买 nike

所以我有一个在 QT Creator 中设计的 GUI。

因为我必须添加一个 createWindowContainer 小部件,所以我必须通过 C++ 将一个小部件添加到我的代码中。我正在添加一个简单的标签来测试最好的方法。不幸的是,虽然程序编译了,但没有显示小部件。

我的主窗口实际上已显示,但没有所需的小部件。

所以我有这些行:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{


ui->setupUi(this);

ui->gridLayout->addWidget(new QLabel("test"),0,0);

// MainWindow does other stuff

ui->setupUi(this);

根据我的阅读,这应该是正确的。我究竟做错了什么?有调试的好方法吗?

编辑:发现问题。添加了第二个 ui->setupUi 以反射(reflect)导致问题的错误。如果您调用它两次,它似乎会删除您在第一次调用后添加的所有小部件。

最佳答案

您调用了两次 UI 设置方法,但更重要的是:第二次调用是在将小部件显式添加到“默认”UI 之后进行的。

这不好,因为小部件在第二秒被“清除”,因为它将再次根据您的 UI 文件设置 UI,该文件不包含显式添加的小部件,因此只需删除该行。

因此,您应该这样写:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{


ui->setupUi(this);

ui->gridLayout->addWidget(new QLabel("test"),0,0);

// MainWindow does other stuff
}

关于c++ - Qt 创建者 : Widget is not added to layout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23252183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com