Qt 从主窗口打开在Designer中创建的小部件

Qt 从主窗口打开在Designer中创建的小部件,qt,qt-designer,Qt,Qt Designer,我已经创建了2个.ui文件,一个是主窗口,另一个是小部件。设计器生成2个.header文件,每个文件在类声明周围都有QT\u BEGIN\u命名空间 问题是,在打开我的主窗口时起作用的东西,在打开第二个窗口小部件时不起作用 为了显示我的主窗口,我创建了一个从我的.ui文件继承的类: class myWindow: public QMainWindow, private Ui::uiClassWindow setupUi(this); 这会很好地打开,因此要打开第二个小部件窗口,我声明一

我已经创建了2个
.ui
文件,一个是主窗口,另一个是小部件。设计器生成2个
.header
文件,每个文件在类声明周围都有
QT\u BEGIN\u命名空间

问题是,在打开我的主窗口时起作用的东西,在打开第二个窗口小部件时不起作用

为了显示我的主窗口,我创建了一个从我的
.ui
文件继承的类:

  class myWindow: public QMainWindow, private Ui::uiClassWindow
  setupUi(this);
这会很好地打开,因此要打开第二个小部件窗口,我声明一个通用小部件对象,然后用指向我的
小部件Ui
头文件的指针保存它:

  QWidget newWidget;
  setupUi(newWidget)
但是
setupUi
解析为我的主窗口头文件…我如何告诉它使用小部件的
setupUi


有更好的方法吗?

据我所知,setupUi函数是在Ui名称空间中定义的。您还需要为其他小部件提供作用域(Ui)。

方法是由您的Ui文件中的
uic
创建的
setupUi()

在您的
myWindow
中,您继承自
Ui::uiClassWindow
,并且可以使用其
setupUi()
方法而无需任何限制。您需要为您的
newWidget
创建一个不同UI类的实例:

auto widget_ui = new Ui::myWidget;
QWidget newWidget;
widget_ui->setupUi(newWidget)

如果需要,您可以
立即删除
小部件\u ui
,但通常需要保留它,以便访问它现在在
newWidget

中创建的子级。您可以使用类名来限定调用吗?也就是说,
OtherWidgetUI::setupUi(newWidget)