我创建了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
?
有没有更好的方法来解决这个问题?
答案 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
中创建的子项。