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

【Qt】工具栏

 工具栏

工具栏是应用程序中集成各种功能实现快捷键使用的一个区域。 

在Qt中使用QToolBar表示工具栏对象,一个窗口可以有多个工具栏,也可以没有,工具栏也是可以进行手动移动位置。

例子:创建工具栏

(1)创建工具栏 

工具栏是需要手动创建出来的,自身不会自动创建

添加菜单栏,使用的是setMenuBar(“set”意味着菜单栏只能有一个,新的会替换旧的)

添加工具栏,使用的是addToolBar(“add”意味着工具栏可以有多个,可以进行重复设置,出现多个工具栏)

这条长直线就是工具栏,需要给工具栏添加菜单项QAction

(2)给工具栏的中添加菜单项

(3)添加qDebug()函数。测试菜单项

典型的工具栏,一般会展示图标,而不是文本。

(4)给工具栏中的菜单项添加图标

 

QAction如果出现在工具栏上,也会出现图标替代文本的情况。

而文本并不会因此消失,而是会以toolTip的方式存在,鼠标悬停上去的时候,就会出现一段提示信息。

(5)手动设置toolTip

除了系统提供的默认提示信息之外,也可以手动进行设置提示信息 

(6)将菜单项放在菜单中

菜单可以放在工具栏中,也会放在菜单中,二者是都可以存在的。

这里如果一个QAction既是QMenu的子元素,也是QTool的子元素,是否会出现重复Delete?

Qt中已经将这类问题解决,只会释放一次,不会重复delete。

(7)代码展示

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QToolBar>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建工具栏QToolBar* toolBar = new QToolBar();this->addToolBar(toolBar);// 添加菜单项QAction* action1 = new QAction("新建");QAction* action2 = new QAction("打印");toolBar->addAction(action1);toolBar->addAction(action2);// 连接槽函数connect(action1, &QAction::triggered, this, &MainWindow::handle1);connect(action2, &QAction::triggered, this, &MainWindow::handle2);// 添加图标action1->setIcon(QIcon(":/new.png"));action2->setIcon(QIcon(":/print.png"));// 手动设置提示action1->setToolTip("这里可以新建文件");action2->setToolTip("这里可以打印文件");// 设置菜单栏与菜单,将菜单项添加在菜单中QMenuBar* menuBar = this->menuBar();this->setMenuBar(menuBar);QMenu* menu = new QMenu("菜单");menuBar->addMenu(menu);menu->addAction(action1);menu->addAction(action2);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::handle1()
{qDebug() << "新建";
}void MainWindow::handle2()
{qDebug() << "打印";
}

例子:创建多个工具栏

(1)设置俩个工具栏和四个菜单项,并将四个菜单俩个俩个分别放在不同的工具栏中。

如果将工具栏拖出来放到窗口的任意位置,称之为“浮动”状态。

  1. 可以设置工具栏出现的初始位置(上下左右)
  2. 可以设置工具栏允许停放在哪些边缘
  3. 可以设置工具栏是否允许浮动
  4. 可以设置工具栏是否可以移动

(2)设置工具栏出现的初始位置

在创建⼯具栏的同时,也可以设置⼯具栏的位置,其默认位置是在窗⼝的最上⾯;如上述代码,默认在最上⾯显⽰。⼯具栏允许停靠的区域由 QToolBar类 提供的 allowAreas()函数 决定,其中可以设置的位置包括:

  • Qt::LeftToolBarArea 停靠在左侧
  • Qt::RightToolBarArea 停靠在右侧
  • Qt::TopToolBarArea 停靠在顶部
  • Qt::BottomToolBarArea 停靠在底部
  • Qt::AllToolBarAreas 以上四个位置都可停靠

(3)使⽤ QToolBar类 提供的 setAllowedAreas()函数 设置停靠位置

(4)设置浮动属性

⼯具栏的浮动属性可以通过 QToolBar类 提供的 setFloatable()函数 来设置。

setFloatable()函数原型为:

void setFloatable (bool floatable)

参数:

true:浮动

false:不浮动

(5)设置移动属性

设置⼯具栏的移动属性可以通过 QToolBar类 提供的 setMovable()函数 来设置。

setMovable()函数原型为:

void setMovable(bool movable)

参数:

true:移动

false:不移动

【说明】若设置⼯具栏为不移动状态,则设置其停靠位置的操作就不会⽣效,所以设置⼯具栏的移动属性类似于总开关的效果。

(6)执行程序

(7)代码展示

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QToolBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 设置俩个工具栏QToolBar* toolBar1 = new QToolBar();QToolBar* toolBar2 = new QToolBar();// 默认初始化为顶部this->addToolBar(toolBar1);// 设置初始化为左边this->addToolBar(Qt::LeftToolBarArea, toolBar2);// 设置允许停靠在左边和右边toolBar2->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);// 设置不允许浮动toolBar2->setFloatable(false);// 设置不允许移动toolBar2->setMovable(false);// 设置四个菜单项QAction* action1 = new QAction("菜单项1");QAction* action2 = new QAction("菜单项2");QAction* action3 = new QAction("菜单项3");QAction* action4 = new QAction("菜单项4");// 将四个菜单项俩俩分开分别放在不同的工具栏中toolBar1->addAction(action1);toolBar1->addAction(action2);toolBar2->addAction(action3);toolBar2->addAction(action4);}MainWindow::~MainWindow()
{delete ui;
}


http://www.mrgr.cn/news/17432.html

相关文章:

  • EventBus使用详解
  • 【Java】—— Java面向对象进阶:继承小练习-Java中实现圆柱体类及其体积计算
  • git中的分支是什么?分支有哪些好处?如何建立分支?
  • 由键盘输入一个两位数,将其个位数与十位数互换后变成一个新的数,输出这个数。
  • PHP学习
  • 周记-2024年第35周8.26~9.1:但求有功,不求无过
  • 战略设计(Strategic Design)
  • 【编程底层思考】多线程编程中哪些行为和操作会导致线程让出cpu
  • Jenkins配置使用LDAP的用户和密码登录
  • VastBase——VPatch版本控制
  • 花店鲜花管理与推荐系统+Python+Django网页界面+管理系统+计算机课设
  • J.U.C Review - 白话Java内存模型
  • 9.1写论文
  • OpenCV入门
  • 中国各地级市全要素生产率(TFP)数据(1978-2022年)
  • 推荐10个开源且实用的大模型
  • python办公自动化:使用`Python-PPTX` 应用动画效果
  • 从Vue的Weex迁移到Rax Weex
  • UE5学习笔记20-给游戏添加声音
  • Python优化算法24——基于觅食生境选择的粒子群算法(FHSPSO)