【发布时间】:2016-05-27 21:58:09
【问题描述】:
我一直在用 Qt 开发一个 GUI 应用程序。我需要从不同的表单文件(.ui)加载 GUI。 请耐心等待,我会写很多东西。
这个想法是让我的应用程序完全灵活,用户可以通过简单地编辑 .ui 文件来更改界面,而无需修改添加到 .ui 文件中的新元素的源代码。
我也在尝试将软件分成多个层次。 (我将在下面尝试澄清。)
例如:(请看附件。我已将所有图像合并到一个文件中,因为我的帐户无权添加两个以上的图像。)
我的主窗口如图所示(主)
first.ui 文件包含主要小部件,它是选项卡小部件,如图所示(第一)
second.ui 文件包含我需要添加到选项卡小部件中的第二个小部件。 第二种形式如图所示(第二种)
最后,完整的界面将如图所示(最终)Image Link Here
在代码中我做了以下操作:
/* 用菜单栏创建了一个主窗口。 菜单栏具有选择和打开 first.ui 文件的操作。 打开的文件由 QUiLoader loader 加载。
First.ui 文件包含一个带有两个选项卡和一个标签的 QTabWidget。 在标签中,我给出了另一个文件 second.ui 的路径
loader 加载打开的文件并返回 QWidget
返回的 QWidget 已在 MainWindow 中设置为 CentralWidget。
然后我已经阅读了 first.ui 文件以找到 label 中给出的文本(这是另一个文件 second.ui 的路径)。
获得该路径后,我已使用加载程序加载了 second.ui 文件。 该文件包含一个具有表单布局和几个按钮的小部件。
现在我正在尝试将这个获得的小部件添加到从先前文件加载的选项卡中。
案例 1: 我通过使用成功地做到了: selectedTab->layout()->addWidget(otherWidgetObainedFromSecondFile);
但在这种情况下,问题在于,我无法访问表单和按钮的元素。 也就是说,按钮和表单字段看起来不像是活动元素。 它们看起来就像固定在选项卡中的快照。
案例 2: 因此,相反,我决定不直接将小部件添加到选项卡。 但是我创建了另一个 MainWindow,将第二个小部件设置为 centralWidget 到这个新的主窗口。 然后将此主窗口添加到选项卡。
但它也给了我同样的结果。
*/
请给我一个解决方案。 我对不同的建议持开放态度,但我想保持相同的想法,即 GUI 必须保持分层形式(从多个 ui 文件加载)
非常感谢您的帮助。
【问题讨论】:
-
如果只显示小部件会怎样?它仍然表现得像静态图像吗?
-
如果我单独显示小部件,那么它看起来很活跃,不像图像。
-
什么是
selectedTab? -
selectedTab 是一个 QWidget 指针,指向 QTabWidget 的选项卡之一。
-
不要将
otherWidgetObainedFromSecondFile小部件添加到selectedTab的布局中,而是尝试添加一个简单的小部件,例如QPushButton,看看是否可以与之交互。
标签: c++ qt user-interface qwidget qmainwindow