【问题标题】:QT5 custom widget with .ui file - calling Ui::myWidget.setupUi required when displaying it带有 .ui 文件的 QT5 自定义小部件 - 显示时需要调用 Ui::myWidget.setupUi
【发布时间】: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 的任何其他小部件所做的那样

标签: c++ qt qt-designer qtwidgets


【解决方案1】:

正如@drescherjm所指出的,解决方案是在MyWidget的构造函数中调用Ui::MyWidget.setupUi

MyWidget::MyWidget(QWidget* parent, Qt::WindowFlags f): QWidget(parent, f) {
    Ui::MyWidget ui;
    ui.setupUi(this);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    相关资源
    最近更新 更多