在Qt中,窗口的布局可以由多个常用的部件组成。你提供的代码涉及了菜单栏、工具栏、状态栏、中心部件和铆接部件(即停靠窗口)。下面是每个部件的详细解析:
1. 菜单栏 (QMenuBar)
Qt中的菜单栏用来创建应用程序的顶部菜单,通常只会有一个菜单栏,并且它可以包含多个菜单项。
QMenuBar *bar = new QMenuBar;
this->setMenuBar(bar);// 创建一个菜单项
QMenu *firstMenu = bar->addMenu("菜单名");
// 添加活动项(即菜单项)
bar->addAction("活动名");
// 添加分隔线
bar->addSeparator();
// 创建二级菜单
QMenu *secondMenu = bar->addMenu("二级菜单");
QMenuBar
是菜单栏的容器,可以通过 addMenu()
方法添加菜单。
addAction()
用来添加菜单项。
addSeparator()
用于在菜单项之间添加分隔线。
setMenuBar()
将菜单栏添加到窗口中。
2. 工具栏 (QToolBar)
工具栏用于提供一系列常见的操作(如剪切、复制、粘贴等),通常显示在窗口的上方或者下方。
QToolBar *toolBar = new QToolBar;
this->addToolBar(toolBar);// 设置工具栏的显示位置(左侧或右侧)
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
// 禁止工具栏浮动
toolBar->setFloatable(false);
// 禁止工具栏移动
toolBar->setMovable(false);// 添加活动项
toolBar->addAction("活动名");
// 添加分隔线
toolBar->addSeparator();
// 添加控件(如按钮、输入框等)
toolBar->addWidget(组件名);
QToolBar
是工具栏的容器,可以通过 addAction()
添加操作项。
setAllowedAreas()
用于设置工具栏可显示的区域(上下左右)。
setFloatable()
禁止工具栏浮动(即不能脱离窗口移动)。
setMovable()
禁止工具栏被移动。
addWidget()
用于在工具栏中添加自定义控件。
3. 状态栏 (QStatusBar)
状态栏用于显示应用程序的状态信息,通常位于窗口的底部。
QStatusBar *stBar = new QStatusBar;
this->setStatusBar(stBar);// 在左侧添加控件(如标签)
stBar->addWidget(组件);
// 在右侧添加永久控件
stBar->addPermanentWidget(组件);
QStatusBar
是状态栏的容器,可以通过 addWidget()
添加控件(如标签、进度条等)。
addPermanentWidget()
用于在状态栏的右侧固定显示控件,通常用于显示始终存在的信息,如应用状态。
4. 中心部件 (setCentralWidget)
中心部件是窗口中的主内容区域,通常用于显示应用程序的核心界面。
this->setCentralWidget(部件);
setCentralWidget()
设置窗口的中央部件,通常用于显示应用的主内容区域。
5. 铆接部件 (QDockWidget)
铆接部件用于将一个可拖动的窗口(如工具面板、文档窗格等)嵌入到主窗口。它可以浮动并停靠到窗口的任意区域。
QDockWidget *dw = new QDockWidget("标题", this);
this->addDockWidget(Qt::LeftDockWidgetArea, dw);// 设置允许停靠的位置
dw->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
QDockWidget
创建一个可停靠的部件,通常用于显示附加的窗口或工具。
addDockWidget()
用于将停靠部件添加到主窗口,可以指定它停靠的位置(例如:左侧或右侧)。
setAllowedAreas()
用于指定停靠区域,Qt::LeftDockWidgetArea
和 Qt::RightDockWidgetArea
表示该部件可以停靠在窗口的左边或右边。
总结
Qt的常见部件包括:
- 菜单栏 (QMenuBar):用于创建和管理顶部的菜单。
- 工具栏 (QToolBar):用于创建快捷操作栏,可以显示在窗口顶部、底部或左右。
- 状态栏 (QStatusBar):用于显示应用程序状态信息,通常位于窗口底部。
- 中心部件 (setCentralWidget):主窗口的核心内容区域,用于展示应用程序的主要界面。
- 铆接部件 (QDockWidget):可停靠的窗口,可以拖动并附加到主窗口的任意区域。
我总结的快速查找代码:
#include <QMenuBar>
#include <QMenu>// 菜单栏(菜单栏最多只能有一个)
QMenuBar *bar = new QMenuBar;
this->setMenuBar(bar);QMenu *firstMenu = bar->addMenu("菜单名");
// 添加活动名
bar->addAction("活动名");
// 添加分割线
bar->addSeparator();
// 添加二级菜单
QMenu *secondMenu = bar->addMenu("菜单名");// 工具栏
// 创建工具栏
QToolBar *toolBar = new QToolBar;
// 将工具栏添加到主窗口
this->addToolBar(toolBar);
// 配置工具栏能够显示的位置, 默认上下左右, 此处设置为 左右
// 更多搜索 setAllowedAreas
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
// 禁止工具栏浮动
toolBar->setFloatable(false);
// 禁止工具栏移动
toolBar->setMovable(false);
// 添加活动名
toolBar->addAction("活动名");
// 添加分割线
toolBar->addSeparator();
// 添加工具
toolBar->addWidget(组件名);// 状态栏
QStatusBar * stBar = new QStatusBar;
this->setStatusBar(stBar);// 将状态信息添加到左侧
stBar->addWidget(组件);
// 将状态信息添加到右侧
stBar->addPermanentWidget(组件);// 配置中心部件
this->setCentralWidget(部件);// 配置铆接部件
QDockWidget * dw = new QDockWidget("标题", this);
this->addDockWidget(Qt::LeftDockWidgetArea, dw);
dw->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);