当前位置: 首页 > news >正文

Qt 窗口 工具栏QToolBar、状态栏StatusBar


每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry”

绪论​:
一段时间没有更新,这段时间一直在忙各种事情,后续将再次上路持续更新C++相关知识
本章将继续前面的QT篇章,本章主要讲到Qt界面中的工具栏和状态栏,它和前面Qt窗口中的菜单栏blog关系非常密切,通过学习这三个内容你就能搭建一个窗口的基本框架了,后续还将更新子窗口的创建,敬请期待~
————————
早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。

工具栏QToolBar 🪚🔨⛏️

  工具栏是应⽤程序中集成各种功能实现快捷键使⽤的⼀个区域。可以有多个,也可以没有,它并不是应⽤程序中必须存在的组件。

  • 它是⼀个可移动的组件
  • 它的元素可以是各种窗⼝组件
  • 它的元素通常以图标按钮的⽅式存在。

如下图为⼯具栏的⽰意图🗺️:
在这里插入图片描述
使用QToolBar表示工具栏对象,一个窗口可以有多个工具栏,也可以没有,工具栏也可以手动移动位置。调⽤ QMainWindow类 的 addToolBar() 函数来创建⼯具栏,每增加⼀个⼯具栏都需要调⽤⼀次该函数。

在这里插入图片描述

实操1🎈

  1. 创建菜单栏MenuBar

  2. 创建菜单QMenu(文件),并添加到菜单栏中

  3. 手动创建QToolBar对象toolBar,再将工具栏加到窗口中(addToolBar

  4. 创建工具项两个 QAction 对象,构造输入名称

  5. 添加到工具栏和菜单栏中 addAction
    在这里插入图片描述

  6. 给工具项使用triggered信号添加信号handle1 2(内部进行打印)
    在这里插入图片描述

  7. 不过典型的工具栏一般是图标而不是文本

  8. 给工具项设置图标 setIcon
    在这里插入图片描述

  9. QAction如果出现在工具栏上,也会产生 图标 覆盖文本

  10. 但注意的是:

    1. 此处被覆盖的文本 会以 tooltip的形式展示

但注意的是QAction即是QMenu的子元素又是QToolBar的子元素,释放的时候只会释放一次,并不会重复delete

实操2:创建多个工具栏🎈

  1. 创建两个工具栏,并添加到窗口中 addToolBar

  2. 创建4个菜单项QAction并分别添加到工具栏中

    1. 其中这俩个工具前面的 … 时代表可以移动的状态
      在这里插入图片描述
  3. 可以设置工具栏出现的初始位置,在addToolBar构造的时候进行设置使用另外一种重载的函数:设置第一个参数为停靠的位置:

    1. Qt::LeftToolBarArea 停靠在左侧
    2. Qt::RightToolBarArea 停靠在右侧
    3. Qt::TopToolBarArea 停靠在顶部
    4. Qt::BottomToolBarArea 停靠在底部
    5. Qt::AllToolBarAreas 以上四个位置都可停靠

在这里插入图片描述

  1. 可以设置工具栏允许停放到那些边缘
    1. QToolBar方法 setAllowedAreas(参数同上,以 | 进行增加)
  2. 可以设置工具栏是否允许浮动、移动
    1. setFloatable 不允许浮动(当设置不允许时就无法浮动)
      在这里插入图片描述

    2. setMoveable 不允许移动
      在这里插入图片描述

状态栏🫠🫠QStatusBar

状态栏简单从记事本来理解就如下图框选:
在这里插入图片描述

同样的和菜单栏类似Qt会默认生成一个
在这里插入图片描述

实操🎈

  1. 在我们创建的时候也是使用statusBar的时候,存在就获取,不存在就创建
  2. 将status设置到窗口中 setStatusBar(状态栏没有被创建这里是必要的,若存在没啥副作用)
  3. 显示临时信息,showMessage(message,显示时间ms)
  4. 给状态栏中添加一个子控件
    1. 状态栏使用addWidget条件,第一个参数是控件对象,第二个参数是一个拉伸系数
    2. QLabel、ProgressBar、PushButton…
    3. addPermanentWidget从右往左的添加控件

源码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStatusBar>
#include <QLabel>
#include <QProgressBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QStatusBar* status = new QStatusBar();setStatusBar(status);//    showMessage("111",1000);QLabel* label = new QLabel("完成度:");QProgressBar* pro = new QProgressBar();
// 从左往右添加,参数1:widget、参数2:拉伸系数
//    status->addWidget(label);
//    status->addWidget(pro);status->addPermanentWidget(label);status->addPermanentWidget(pro);}MainWindow::~MainWindow()
{delete ui;
}

最终效果
在这里插入图片描述


本章完。预知后事如何,暂听下回分解。

如果有任何问题欢迎讨论哈!

如果觉得这篇文章对你有所帮助的话点点赞吧!

持续更新大量C++ qt细致内容,早关注不迷路。

http://www.dtcms.com/a/300636.html

相关文章:

  • 24点数学游戏(穷举法求解表达式)
  • 基于Matlab自适应阈值分割算法的图像处理研究
  • esp32s3创建rust工程 window成功mac
  • [硬件电路-97]:模拟器件 - 如何通过外部的闭环负反馈,让运算放大器从“暴脾气”、“愣头青”、情绪容易失控者变成“沉着”、“冷静”的精密调控者的?
  • MySQL表的增删改查(基础)
  • 基于鲸鱼算法的三相逆变器分数阶滑模控制参数优化
  • solidity从入门到精通 第六章:安全第一
  • 设备独立性软件-高速缓存与缓冲区
  • 广东省省考备考(第五十八天7.27)——资料分析、数量、判断推理(强化训练)
  • 通过不同坐标系下的两个向量,求解旋转矩阵
  • springboot基于Java的人力资源管理系统设计与实现
  • LabelImg:简洁高效的图像标注工具和下载
  • ROS2入门到精通教程(三)快速体验
  • Unity 实时 CPU 使用率监控
  • 机械学习----knn实战案例----手写数字图像识别
  • 携带参数的表单文件上传 axios, SpringBoot
  • Karonte: Detecting Insecure Multi-binary Interactions in Embedded Firmware论文分享
  • LabelMe数据标注软件介绍和下载
  • UNet 改进(38):融合多尺度输入与可变形卷积、门控特征融合的医学图像Unet分割网络
  • Django实时通信实战:WebSocket与ASGI全解析(下)
  • Flutter开发实战之测试驱动开发
  • 金融科技中的跨境支付、Open API、数字产品服务开发、变革管理
  • KNN算法实战:手写数字识别详解
  • 【自动化运维神器Ansible】Ansible常用模块之archive模块详解
  • 2024-2025华为ICT大赛中国区 实践赛网络赛道(高教组)全国总决赛 理论部分真题+解析
  • 零基础,如何入手学习SAP?
  • CentOS网卡未被托管解决记录
  • PiscCode实现从图像到字符艺术
  • Word和WPS文字如何制作分栏试卷?想分几栏分几栏
  • 6.Pinia快速入门