将多个QMainWindow合并为一个QTabWidget中的选项卡

0 投票
1 回答
952 浏览
提问于 2025-04-17 23:40

我的项目被分成了多个部分,每个部分都可以独立运行。我和我的小组成员各自负责不同的部分,现在我想把它们合并成一个单一的 QMainWindow 窗口。目前,我在每个 QMainWindow 中都有菜单项,这样可以通过关闭当前窗口并在同一个 QApplication 中启动另一个窗口来切换不同的部分。

但我想用更优雅的方式来实现这个功能,使用 QTabWidget,这样每个部分就可以有自己的标签页。我该怎么做呢?(顺便说一下,我在用 QT Designer 设计界面)

我做了什么:
- 创建了一个新窗口,添加了一个 QTabWidget,然后把之前每个 QMainWindow 中的所有小部件拖放到不同的标签页中。

从设计的角度来看,这样做是完全可行的。
但是我不知道怎么把它们的代码合并在一起。它们现在都是从 QMainWindow 继承的不同类。

难道就没有其他办法可以把所有相关的槽函数和功能手动添加到新的主窗口吗?

1 个回答

0

每个部分都是一个QMainWindow,所以每个QMainWindow都可以放在一个标签页控件(tabWidget)里。

假设“部分一”的QMainWindow是从QMainWindow派生出来的。我使用的代码大致如下:

QTabWidget *tabMaster = new QTabWidget;   
Portion_one_QMainWindow *Portion_one = new Portion_one_MainWindow;
tabMaster.addTab(Portion_one, QIcon("images/portion_one.png"), "name_of_portion_one" );

主要的工作是把各个部分的代码集中到一个地方,这样就可以构建你的“主启动器”。

撰写回答