在多个ui文件之间拆分Qt表单

时间:2014-05-15 10:58:18

标签: c++ qt inheritance user-interface qt-designer

我在Qt Designer中创建了一个主窗口UI文件。为了避免混乱并使代码更加模块化,我想在单独的ui文件中创建此窗口的某些部分。

例如,我可能在主窗口上有一个标签小部件,然后我想要单独的page1.ui和page2.ui然后我可以"嵌入"在主窗口内。

是否可以只使用UI文件,还是需要为每个其他小部件创建一个类?

我正在考虑创建单独的类Page1UIPage2UI,这些类公开继承自qmake生成的ui_page1.hui_page2.h(以便可以轻松访问其中的小部件)从主窗口)然后将主窗口的占位符小部件提升到这些类。所以在代码中我有类似的东西,例如:

connect (page1->ui->someButtonFromPage1uiFile, ..., this->ui->someMainWindowWidget, ...);

然而Qt documentation似乎没有提到公共继承,所以我想知道这是否是正确的方法,或者是否有更简单的方法。

1 个答案:

答案 0 :(得分:1)

你不需要继承。这些UI文件只是小部件。所以你当然可以这样做。你应该有一个主类,它将有一个标签小部件,然后只需在主标签小部件中添加你的page1,page2等。在我看来,你需要的是组合。

您需要做的是创建一个派生自QWidget的单独类,该类将包含您生成的UI表单的对象。您需要使用setupUI()作为参数在新课程中调用该生成表单的this