【Qt 学习笔记】Qt窗口 | 工具栏 | QToolBar的使用及说明


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt窗口 | 工具栏 | QToolBar的使用及说明

文章编号:Qt 学习笔记 / 48

文章目录

  • Qt窗口 | 工具栏 | QToolBar的使用及说明
    • 一、工具栏
      • 1. 什么是工具栏
    • 二、QToolBar介绍
      • 1. 简介
      • 2. 常用属性
      • 3. 常用方法
    • 三、代码创建工具栏
      • 1. 创建工具栏
      • 2. 添加快捷项
      • 3. 设置工具栏图标
      • 4. 设置提示信息(toolTip)
      • 5. 设置工具栏初始位置
      • 6. 设置工具栏停放的边缘
      • 7. 设置工具栏的浮动
      • 8. 设置工具栏的移动
      • 9. 文件相关代码查看


一、工具栏

1. 什么是工具栏

工具栏是一种位于软件或应用程序界面上方的水平栏,通常包含一系列常用工具和命令按钮,用于快速访问和执行常用功能。

工具栏通常通过图标、文本或图标加文本的形式展示工具和命令,用户可以通过单击这些按钮来执行相应的操作,从而提高工作效率。

工具栏可以根据用户的需求进行自定义,或者根据软件的功能进行预设,以满足不同用户的操作习惯和工作需求。常见的工具栏包括格式工具栏、编辑工具栏、插入工具栏、绘图工具栏等。

在这里插入图片描述


二、QToolBar介绍

1. 简介

QToolBar是Qt框架中的一个控件,用于在工具栏中显示一组操作按钮和其他控件。它提供了一种方便的方式来组织和管理应用程序中的工具和操作。

QToolBar可以包含各种类型的控件,如按钮、下拉菜单、文本框等。可以通过添加和删除控件来自定义工具栏的内容。

QToolBar还提供了许多内置的功能,如可拖动的工具栏、可停靠的工具栏,以及工具栏按钮的自定义样式等。

使用QToolBar,开发人员可以轻松地创建一个功能丰富且易于使用的工具栏,以增强应用程序的用户体验和功能性。

2. 常用属性

属性说明
movable设置工具栏是否可拖动,默认为true。
orientation设置工具栏的方向,可以是Qt::Horizontal(水平方向)或Qt::Vertical
iconSize设置工具栏上图标的大小。
toolButtonStyle设置工具栏按钮的样式,可以是
Qt::ToolButtonIconOnly(仅图标)
Qt::ToolButtonTextOnly(仅文本)
Qt::ToolButtonIconText(图标和文本)

3. 常用方法

方法说明
addAction(action)在工具栏上添加一个操作按钮。
addSeparator()在工具栏上添加一个分隔符。
addWidget(widget)在工具栏上添加一个自定义控件。
clear()清空工具栏上的所有控件。
insertWidget(before, widget)在指定控件之前插入一个自定义控件。
removeAction(action)从工具栏中移除一个操作按钮。
toggleViewAction()返回一个切换工具栏显示与隐藏的操作按钮。
setFloatable(floatable)设置工具栏是否可浮动。
setToolButtonStyle(style)设置工具栏按钮的样式。
setIconSize(size)设置工具栏上图标的大小。

三、代码创建工具栏

1. 创建工具栏

创建工具栏,并使用addToolBar() 函数添加到窗口中

调⽤ QMainWindow类 的 addToolBar() 函数来创建⼯具栏,每增加⼀个⼯具栏都需要调⽤⼀次该函
数。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QToolBar>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QToolBar * toolbar = new QToolBar();
    this->addToolBar(toolbar);
}

MainWindow::~MainWindow()
{
    delete ui;
}

此时运行结果
在这里插入图片描述


2. 添加快捷项

在工具栏中添加快捷项等同于菜单项QAction(),并使用addAction()函数添加到工具栏中

//创建快捷项等同于菜单项
QAction * action1 = new QAction("新建");
QAction * action2 = new QAction("保存");

//添加到工具栏中
toolbar->addAction(action1);
toolbar->addAction(action2);

此时运行结果
在这里插入图片描述


3. 设置工具栏图标

在阿里巴巴矢量图标库中进行查看合适的图标,如下图
在这里插入图片描述

将图片加入到qrc文件中,详细步骤参考文章:qrc文件机制
在这里插入图片描述

将图片添加到快捷项中

//创建快捷项等同于菜单项
QAction * action1 = new QAction("新建");
//使用setIcon添加图标
action1->setIcon(QIcon(":/new.png"));
QAction * action2 = new QAction("保存");
action2->setIcon(QIcon(":/save.png"));

此时运行结果
在这里插入图片描述


4. 设置提示信息(toolTip)

在上述操作中,将快捷项设置图标后,本来的文字没有消失,默认变成toolTip的形式存在
也可以通过setToolTip的方法改变提示信息

QAction * action2 = new QAction("保存");
action2->setIcon(QIcon(":/save.png"));
action2->setToolTip("这是保存按钮");

运行结果

在这里插入图片描述


5. 设置工具栏初始位置

在MainWindow 提供的addToolBar()中设置工具栏的默认停靠位置

在创建⼯具栏的同时,也可以设置⼯具栏的位置,
其默认位置是在窗⼝的最上⾯,其中可以设置的位置包括:
• Qt::LeftToolBarArea 停靠在左侧
• Qt::RightToolBarArea 停靠在右侧
• Qt::TopToolBarArea 停靠在顶部
• Qt::BottomToolBarArea 停靠在底部
• Qt::AllToolBarAreas 以上四个位置都可停靠

//添加工具栏
QToolBar * toolbar = new QToolBar();
//创建工具栏的同时,指定工具栏在左侧显示
this->addToolBar(Qt::LeftToolBarArea ,toolbar);

运行结果
在这里插入图片描述


6. 设置工具栏停放的边缘

使用 QToolBar类 提供的 setAllowedAreas()函数 设置停靠位置。如下:

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

#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(toolbar2);

    QAction* action1 = new QAction("文件");
    QAction* action2 = new QAction("构建");
    toolbar1->addAction(action1);
    toolbar2->addAction(action2);

    //只运行左侧停靠
    toolbar1->setAllowedAreas(Qt::LeftToolBarArea);
    //运行在左右停靠
    toolbar2->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行结果
在这里插入图片描述


7. 设置工具栏的浮动

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

参数:
true:浮动
false:不浮动

//允许工具栏浮动
toolbar1->setFloatable(true);
//不允许工具栏浮动
toolbar1->setFloatable(false);

8. 设置工具栏的移动

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

参数:
true:移动
false:不移动

//允许工具栏移动
toolbar2->setMovable(true);
//不允许工具栏移动
toolbar2->setMovable(false);

9. 文件相关代码查看

相关代码请查看DuckBro的Gitee仓库


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/644212.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android14 - 绘制系统 - 概览

从Android 12开始&#xff0c;Android的绘制系统有结构性变化&#xff0c; 在绘制的生产消费者模式中&#xff0c;新增BLASTBufferQueue&#xff0c;客户端进程自行进行queue的生产和消费&#xff0c;随后通过Transation提交到SurfaceFlinger&#xff0c;如此可以使得各进程将缓…

Golang | Leetcode Golang题解之第111题二叉树的最小深度

题目&#xff1a; 题解&#xff1a; func minDepth(root *TreeNode) int {if root nil {return 0}queue : []*TreeNode{}count : []int{}queue append(queue, root)count append(count, 1)for i : 0; i < len(queue); i {node : queue[i]depth : count[i]if node.Left …

软件项目详细设计说明书实际项目参考(word原件下载及全套软件资料包)

系统详细设计说明书案例&#xff08;直接套用&#xff09; 1.系统总体设计 2.性能设计 3.系统功能模块详细设计 4.数据库设计 5.接口设计 6.系统出错处理设计 7.系统处理规定 软件开发全文档下载&#xff08;下面链接或者本文末个人名片直接获取)&#xff1a;软件开发全套资料-…

转行一年了

关注、星标公众号&#xff0c;直达精彩内容 ID&#xff1a;技术让梦想更伟大 整理&#xff1a;李肖遥 来公司一年了。 说是转行其实还是在半导体行业&#xff0c;熟悉我的朋友知道 &#xff0c;我在18年开始进入半导体行业&#xff0c;那个时候想着行业很重要&#xff0c;站对了…

高校网站群及融媒体中心建设方案

一、项目背景 随着信息技术的飞速发展&#xff0c;互联网已成为高校展示形象、传播信息、服务师生、沟通社会的重要渠道。然而&#xff0c;目前许多高校在网站建设和媒体传播方面存在以下问题&#xff1a; 网站分散、缺乏统一规划&#xff1a;各高校内部往往存在多个部门或学院…

常见 JVM 面试题补充

原文地址 : 26 福利&#xff1a;常见 JVM 面试题补充 (lianglianglee.com) CMS 是老年代垃圾回收器&#xff1f; 初步印象是&#xff0c;但实际上不是。根据 CMS 的各个收集过程&#xff0c;它其实是一个涉及年轻代和老年代的综合性垃圾回收器。在很多文章和书籍的划分中&…

springboot里面自带的测试用法

1. 依赖项配置 首先&#xff0c;确保你的 pom.xml 或 build.gradle 文件中包含必要的依赖项。以下是 Maven 配置示例&#xff1a; <dependencies><!-- Spring Boot Starter Test --><dependency><groupId>org.springframework.boot</groupId>&l…

TypeScript-函数类型

函数类型 指给函数添加类型注解&#xff0c;本质上就是给函数的参数和返回值添加类型约束 function add(a: number,b: number) :number {return a b } let res: number res add(2 3) // 函数参数注解类型之后&#xff0c;不但限制了参数的类型还限制了参数为必填 优点&…

【Flutter】有状态组件StatefulWidgetScaffold组件属性

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Flutter学习 &#x1f320; 首发时间&#xff1a;2024年5月26日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 目…

HTML静态网页成品作业(HTML+CSS)——企业酒店官网网页(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有5个页面。 二、作品演示 三、代…

vue3 <script setup> 语法糖时间组件

<template><div><p>当前时间Current Time: {{ currentTime }}</p></div> </template><script setup> import { ref, onBeforeUnmount, onMounted } from vueconst currentTime ref()let interval // 声明 interval 变量const getTo…

ArcGIS提取含有计曲线的等高线

喜欢就关注我们吧&#xff01; 今天我么来看看&#xff0c;如何利用DEM提取含有计曲线的等高线&#xff01; 常规的话我们利用DEM提取的等高线都是不带计曲线的&#xff0c;无法把计曲线标注出来&#xff0c;今天我们就来看下&#xff0c;如何处理一下哦&#xff01;提取带有计…

uni-app 微信 支付宝 小程序 使用 longpress 实现长按删除功能,非常简单 只需两步

1、先看效果 2、直接上代码 ui结构 <view class"bind" longpress"deleteImage" :data-index"index"><view class"bind_left">绑定设备</view><view class"bind_right"><view class"bind_t…

gdc2024:Raytracing in Snowdrop技术实现与性能优化策略

在今年的GDC&#xff08;游戏开发者大会&#xff09;的Advanced Graphics Summit上&#xff0c;关于Snowdrop引擎中光线追踪技术的讨论引起了广泛关注。 一、光线追踪全局照明的实现细节 屏幕空间追踪&#xff1a; 屏幕空间追踪从相机出发&#xff0c;对屏幕上的每个像素点生成…

x264 码率控制中实现 VBV 算法源码分析

关于 VBV 的解释与原理可以参考x264 码率控制 VBV 原理。 x264中 VBV 算法执行的流程 vbv 参数配置相关函数 x264_param_default函数 功能:编码参数默认设置,关于 vbv的参数的默认设置;函数内vbv相关代码:/* ... */ //代码有删减 param->rc.i_vbv_max_bitrate = 0; par…

Java的类和对象

Java的类和对象 前言一、面向过程和面向对象初步认识C语言Java 二、类和类的实例化基本语法示例注意事项 类的实例化 三、类的成员字段/属性/成员变量注意事项默认值规则字段就地初始化 方法static 关键字修饰属性代码内存解析 修饰方法注意事项静态方法和实例无关, 而是和类相…

Pytorch深度学习实践笔记5

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;pytorch深度学习 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 视频来自【b站刘二大人】 目录 1 Linear Regress…

视觉与数据的和谐:数字孪生技术在UI设计中的艺术

视觉与数据的和谐&#xff1a;数字孪生技术在UI设计中的艺术 引言 在UI设计的世界里&#xff0c;视觉艺术与数据科学似乎相隔甚远&#xff0c;然而随着数字孪生技术的出现&#xff0c;这两者之间的界限变得模糊。数字孪生技术不仅是一种技术革新&#xff0c;更是一种艺术形式…

vue+elemntui 加减表单框功能样式

<el-form ref"form" :model"form" :rules"rules" label-width"80px"><el-form-item label"配置时间" prop"currentAllocationDate"><div v-for"(item,key) in timeList"><el-date…

Cortex-M3的SysTick 定时器

目录 概述 1 SysTick 定时器 1.1 SysTick 定时器功能介绍 1.2 SysTick 定时器功能实现 1.3 SysTick在系统中的作用 2 SysTick应用的实例 2.1 建立异常服务例程 2.2 使能异常 2.3 闹钟功能 2.4 重定位向量表 2.5 消灭二次触发 3 SysTick在FreeRTOS中的应用 3.1 STM…