窗口栏组件

devtools/2025/1/23 7:27:10/

在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::LeftDockWidgetAreaQt::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);

http://www.ppmy.cn/devtools/152818.html

相关文章

高水平EI会议-第四届机器学习、云计算与智能挖掘国际会议

一、会议信息 大会名称&#xff1a;第四届机器学习、云计算与智能挖掘国际会议&#xff08;MLCCIM 2025&#xff09; 会议地点&#xff1a;中国漠河 会议时间&#xff1a;2025年7月21-25日 截稿日期&#xff1a;2025年5月10日 支持单位&#xff1a;佛山市人工智能学会、佛…

关于噪声抑制的一份介绍

在数字图像处理中&#xff0c;噪声问题是时常发生的&#xff0c;在这篇文章中将介绍有关噪声抑制的内容&#xff0c;具体包括有关噪声的介绍、抑制的算法等。 一、噪声 首先&#xff0c;我们知道图像噪声是指在拍摄或传输时图像所受到的随机干扰。而常见的噪声一般有两种&…

【SpringBoot实现xss防御】

SpringBoot实现xss防御 在Spring Boot中实现XSS防御&#xff0c;可以通过多种方式来确保输入的安全性和防止恶意脚本的注入。下面提供了一些具体的实现代码示例&#xff0c;包括输入清理、输出编码以及设置安全响应头。 1. 输入清理 创建一个简单的工具类来进行HTML转义&…

VirtualBox can‘t enable the AMD-V extension

个人博客地址&#xff1a;VirtualBox cant enable the AMD-V extension | 一张假钞的真实世界 最近一次完成Deepin的系统更新后&#xff0c;进入VirtualBox创建的虚拟机&#xff08;Widows10&#xff09;时&#xff0c;出现以下错误&#xff1a; 根据网址“https://askubuntu.…

Labview替代平台ATECLOUD的兼容性如何?

Labview替代平台ATECLOUD的兼容性十分灵活便捷&#xff0c;平台中现已兼容了超过300品牌型号的仪器。 仪器兼容种类多 标准仪器&#xff1a;可兼容示波器、万用表、矢量网络分析仪等 300多种常见品牌型号标准仪器。 非标设备&#xff1a;能够与探针台、万用表切换工装等非标…

闭包,变量和函数提升,函数参数,展开运算符,箭头函数

闭包&#xff1a; 内层函数加上外层变量&#xff0c;下边的闭包也就是 fn函数加上 fn函数中运用到的外层变量 a scope&#xff1a;作用域 现在可以看到如果内层函数没有使用到外部变量&#xff0c;那么就不会产生闭包 闭包作用&#xff1a;封闭数据&#xff0c;提供操作 闭包常…

async++库的使用示例

1、普通异步函数 如前面的博客介绍的&#xff0c;这个库中提供了async::spawn方法&#xff0c;这个方法通常用来启动异步函数&#xff0c;这个框架会利用线程池去完成函数&#xff0c;因此要注意数据安全。正因为将任务放到了单独的线程执行&#xff0c;并且还有调度开销&…

HBased的原理

一、什么是HBase HBase是一个分布式&#xff0c;版本化&#xff0c;面向列的数据库&#xff0c;依赖Hadoop和Zookeeper &#xff08;1&#xff09;HBase的优点 提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统 (2) HBase 表的特性 Region包含多行 列族包含多…