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

发布于:2025-07-28 ⋅ 阅读:(18) ⋅ 点赞:(0)


每日激励:“不设限和自我肯定的心态: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细致内容,早关注不迷路。


网站公告

今日签到

点亮在社区的每一天
去签到