窗口栏组件

embedded/2025/1/23 16:02:09/

在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/embedded/156339.html

相关文章

新能源监控平台都管理哪些数据

北理新源信息科技有限公司&#xff08;简称“北理新源”&#xff09;依托北京理工大学电动车辆国家工程研究中心&#xff0c;建设和运营了“新能源汽车国家监测与管理平台”。该平台是国家级的新能源汽车数据监管平台&#xff0c;主要负责对新能源汽车的运行数据进行采集、监测…

小米Vela操作系统开源:AIoT时代的全新引擎

小米近日正式开源了其物联网嵌入式软件平台——Vela操作系统&#xff0c;并将其命名为OpenVela。这一举动在AIoT&#xff08;人工智能物联网&#xff09;领域掀起了不小的波澜&#xff0c;也为开发者们提供了一个强大的AI代码生成器和开发平台。OpenVela项目源代码已托管至GitH…

Java设计模式 六 原型模式 (Prototype Pattern)

原型模式 (Prototype Pattern) 原型模式是一种创建型设计模式&#xff0c;通过复制现有对象来创建新对象&#xff0c;而不是直接实例化类。这种模式适用于创建成本较高的对象&#xff0c;或者需要重复创建相似对象的场景。 原型模式的核心思想是&#xff1a; 通过对象自身提供…

使用Redis防止重复发送RabbitMQ消息

问题 今天遇到一个问题&#xff0c;发送MQ消息的时候需要保证不会重复发送&#xff0c;注意不是可靠到达&#xff08;可靠到达可以通过消息确认机制和回调接口保证&#xff09;&#xff0c;这里保证的是不会生产多条一样的消息。 方法 综合讨论下来决定使用Redis缓存来解决&…

Docker 国内镜像源

目录 概述 步骤 参考资料 概述 自 2024-06-06 开始&#xff0c;阿里&#xff0c;腾讯、中科大等国内的 Docker Hub 镜像加速器相继停止服务&#xff0c;总结了网友整理出来一些其他国内 Docker Hub 镜像源&#xff0c;经过测试可以使用。 步骤 配置 Docker 守护程序 修改…

Kubectl常用命令操作

kubectl 命令格式&#xff1a; kubectl command type name command:表示子命令&#xff0c;用于操作kubernetes的集群资源对象&#xff0c;如&#xff1a;create delete describe get apply type:资源对象的类型 name:资源对象的名称 1.创建资源对象 kubectl create -f my…

Blazor-Blazor WebAssmbly项目结构(上)

创建项目 今天我们来创建一个BlazorWebAssmbly项目&#xff0c;来看看项目结构是如何得&#xff0c;我们创建带模板得项目&#xff0c;会创建出一个demo&#xff0c;来看看项目结构。 创建的项目可以直接启动运行&#xff0c;首次启动会看见加载的过程&#xff0c;这个过程…

自定义BeanPostProcessor实现自动注入标注了特定注解的Bean

定义注解 Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented public interface MyAnno { }定义一个配置类 Configuration public class RestConfig {MyAnnoBeanpublic PayDTO payDTO(){PayDTO payDTO …