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

Splitting Qt forms between multiple ui files

本文关键字:分割 Qt 表单 之间 文件 ui      更新时间:2023-10-16

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

例如,我可能有一个标签小部件在主窗口,然后我想有单独的页面1。UI和page2。ui,然后我可以将其"嵌入"到主窗口中。

是可能的只是UI文件,还是我需要为每个额外的小部件创建一个类?

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

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

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

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

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