> 技术文档 > Qt 窗口 工具栏QToolBar、状态栏StatusBar

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


Qt 窗口 工具栏QToolBar、状态栏StatusBar
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry”

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

工具栏QToolBar 🪚🔨⛏️

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

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

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

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

实操1🎈

  1. 创建菜单栏MenuBar

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

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

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

  5. 添加到工具栏和菜单栏中 addAction
    Qt 窗口 工具栏QToolBar、状态栏StatusBar

  6. 给工具项使用triggered信号添加信号handle1 2(内部进行打印)
    Qt 窗口 工具栏QToolBar、状态栏StatusBar

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

  8. 给工具项设置图标 setIcon
    Qt 窗口 工具栏QToolBar、状态栏StatusBar

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

  10. 但注意的是:

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

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

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

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

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

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

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

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

  1. 可以设置工具栏允许停放到那些边缘
    1. QToolBar方法 setAllowedAreas(参数同上,以 | 进行增加)
  2. 可以设置工具栏是否允许浮动、移动
    1. setFloatable 不允许浮动(当设置不允许时就无法浮动)
      Qt 窗口 工具栏QToolBar、状态栏StatusBar

    2. setMoveable 不允许移动
      Qt 窗口 工具栏QToolBar、状态栏StatusBar

状态栏🫠🫠QStatusBar

状态栏简单从记事本来理解就如下图框选:
Qt 窗口 工具栏QToolBar、状态栏StatusBar

同样的和菜单栏类似Qt会默认生成一个
Qt 窗口 工具栏QToolBar、状态栏StatusBar

实操🎈

  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 #include #include 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;}

最终效果
Qt 窗口 工具栏QToolBar、状态栏StatusBar


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

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

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

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