带有 .ui 文件的 QT5 自定义小部件 - 显示时需要调用 Ui::myWidget.setupUi
Posted
技术标签:
【中文标题】带有 .ui 文件的 QT5 自定义小部件 - 显示时需要调用 Ui::myWidget.setupUi【英文标题】:QT5 custom widget with .ui file - calling Ui::myWidget.setupUi required when displaying it 【发布时间】:2022-01-12 21:53:09 【问题描述】:我使用.ui
文件创建了QT 自定义小部件MyWidget
。但是当我在 QT 设计器中将 QWidget
放置到 MainWindow
并将其提升为 MyWidget
时,它只会呈现一个空的小部件。
我知道为什么它不起作用。在函数setupUi
中生成的文件ui_mainwindow.h
中是用于显示我的小部件的代码如下:
widget = new MyWidget(centralWidget);
widget->setObjectName(QString::fromUtf8("widget"));
verticalLayout->addWidget(widget);
当我调用Ui::MyWidget.setupUi
(将上面的代码替换为以下代码)时,它可以工作:
widget = new MyWidget(centralWidget);
Ui::MyWidget uiOfWidget;
uiOfWidget.setupUi(widget);
widget->setObjectName(QString::fromUtf8("widget"));
verticalLayout->addWidget(widget);
所以我的问题是,如何才能达到以下条件之一:
编译MainWindow.ui
文件时自动生成这样的代码
无需调用Ui::MyWidget.setupUi
或其他修复...?
我使用 QT5。谢谢!
【问题讨论】:
通常我在 MyWidget 的构造函数中调用 setupUi 就像我对使用.ui
的任何其他小部件所做的那样
【参考方案1】:
正如@drescherjm所指出的,解决方案是在MyWidget
的构造函数中调用Ui::MyWidget.setupUi
:
MyWidget::MyWidget(QWidget* parent, Qt::WindowFlags f): QWidget(parent, f)
Ui::MyWidget ui;
ui.setupUi(this);
【讨论】:
以上是关于带有 .ui 文件的 QT5 自定义小部件 - 显示时需要调用 Ui::myWidget.setupUi的主要内容,如果未能解决你的问题,请参考以下文章
Qt Designer - 只生成一个带有多个小部件的 .ui 文件
使用我的 QT5 自定义小部件调整 QGroupBox 大小
如何将 QGraphicsView 提升为 .ui 文件中的自定义小部件?