Qt c++:来自多个.ui文件的动态GUI
Qt c++ : Dynamic GUI from multiple .ui files
我一直在用Qt开发一个GUI应用程序。我需要从不同的表单文件 (.ui( 加载 GUI。请耐心等待,因为我要写很多东西。
这个想法是为了使我的应用程序保持完全灵活,用户可以通过简单地编辑 .ui 文件来更改界面,并且无需修改添加到 .ui 文件的新元素的源代码。
我还试图将软件分为多层。(我将在下面尝试澄清。
例如:(请参阅所附图片。我已将所有图像合并到单个文件中,因为我的帐户无权添加两个以上的图像。
-
我有主窗口,如图所示(主(
第一个 .ui文件包含主小部件,它是选项卡小部件,看起来像如图所示(第一个(
second.ui 文件包含第二个小部件,我需要将其添加到选项卡小部件中。第二种形式如图所示(第二种(
最后,完整的界面将如下所示 (最终( 图片链接在这里
在代码中,我做了以下操作:
/*创建了一个带有菜单栏的主窗口。菜单栏具有选择和打开 first.ui 文件的操作。打开的文件由 QUiLoader 加载。
First.ui 文件包含一个带有两个选项卡和一个标签的 QTabWidget。在标签中,我给出了另一个文件 second.ui 的路径
加载器加载打开的文件并返回 QWidget
返回的 QWidget 已在 MainWindow 中设置为 CenntralWidget。
然后我阅读了第一个.ui文件以查找标签中给出的文本(这是另一个文件second.ui的路径(。
获得该路径后,我已使用加载程序加载了 second.ui 文件。此文件包含具有表单布局和少量按钮的小部件。
现在我正在尝试将此获得的小部件添加到从上一个文件加载的选项卡中。
案例1:我成功地通过使用:selectedTab->layout((->addWidget(otherWidgetObainedFromSecondFile(;
但在这种情况下,问题是,我无法访问表单和按钮的元素。也就是说,按钮和表单字段看起来不像活动元素。它们看起来就像标签中固定的快照。
案例2:因此,相反,我决定不直接将小部件添加到选项卡中。但是我创建了另一个主窗口,将第二个小部件设置为这个新主窗口的 centralWidget。然后将此主窗口添加到选项卡。
但它也给了我同样的结果。
*/
请给我一个解决方案。我对不同的建议持开放态度,但我想保持相同的想法,即 GUI 必须保持分层形式(从多个 ui 文件加载(
我将非常感谢您的帮助。
您可以使用QFormBuilder
。假设您的选项卡小部件被命名为 TabPane
QFormBuilder loader;
QFile file(":second.ui");
file.open(QFile::ReadOnly);
QWidget *pane=loader.load(&file,this);
file.close();
qDeleteAll(ui->TabPane->findChildren<QWidget *>(QString(),Qt::FindDirectChildrenOnly)); //remove any existing child widgets from TabPane
ui->TabPane->layout()->addWidget(pane);
理解正确,您必须使用 addTab 方法QTabWidget
- 如何处理使用.ui文件生成的.h文件
- 可以在JSON文件的帮助下在Qt中创建UI表单
- 在 ui 文件中隐藏 QTabWidget 中的单个选项卡窗格?
- 由于多个 *.ui 文件而导致的多个Ui_Dialog定义?
- 如何将 .ui 完全转换为 C++ 头文件和源文件
- 从多个文件访问静态全局 WinForm UI 对象
- 如何在Qt Designer UI文件中清除QMainWindow的几何标记
- 将一个 UI 文件添加到另一个 UI 文件中
- 如何使用.UI文件在QT Creator中使用CMAKE制作GUI QT项目
- QT Creator不会更新.UI文件和设计器
- 为什么使用Qt Creator调整.ui文件会导致编译期间对.h文件进行更改
- 在流体中更改 .fl 文件在使用 Visual Studio 运行时不会更改 UI
- 连接QT中的多个.UI文件
- 将 .ui 文件导入 Qt5 C++时出错"was not declared in this scope"
- QT在UI文件中恢复了我的更改
- 是否可以在Qt设计器中使用依赖项注入(对于.ui文件)
- QML应用程序编译一个 *form.ui.qml文件,但忽略了关联的.qml文件
- QUiLoader:使用自定义小部件加载 .ui 文件的要求
- 无法从外部cpp文件访问Qt UI
- 在一个程序中处理多个QT Designer UI文件的最佳方法是什么?