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

时间:2014-09-12 01:28:57

标签: qt qt-designer

我创建了2个.ui个文件,一个是主窗口,另一个是小部件。 Designer围绕类声明生成2 .header个文件,每个文件都带有QT_BEGIN_NAMESPACE

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

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

  class myWindow: public QMainWindow, private Ui::uiClassWindow
  setupUi(this);

打开正常,然后打开第二个窗口小部件窗口,我声明一个通用窗口小部件对象,然后使用指向我的Widget Ui头文件的指针保存它:

  QWidget newWidget;
  setupUi(newWidget)

setupUi解析为我的主窗口头文件...如何告诉它使用窗口小部件的setupUi

有没有更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

setupUi()方法由您的UI文件中的uic创建,并且每个已编译的UI都有所不同。

myWindow中,您继承自Ui::uiClassWindow,并且可以无限制地使用其setupUi()方法。您需要newWidget的其他UI类的实例:

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

如果您愿意,您可以立即delete widget_ui - 但通常情况下,您需要保留它才能访问现在在newWidget中创建的子项。