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

news2024/11/15 12:59:08

  • 博客主页: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仓库


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring AI实战之二:Chat API基础知识大串讲(重要)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos Spring AI实战全系列链接 Spring AI实战之一&#xff1a;快速体验(OpenAI)Spring AI实战之二&#xff1a;Chat API基础知识大串讲(重要)SpringAIOllama三部曲…

将本地项目上传到 gitee 仓库

1、创建 gitee 仓库 到 gitee 官网&#xff0c;新建仓库 配置新建仓库 完成仓库的创建 项目上传到仓库 上传项目需要安装git git官方下载地址&#xff1a;git下载地址 安装完成&#xff0c;前往本地项目所在文件夹&#xff0c;右击选择 Git Bash Here 刚下载完成需要配置G…

Quartus 联合 ModelSim 仿真 IP 核(RAM)

文章目录 ModelSim 路径设置创建 RAM进行仿真 本文主要介绍如何在包含 IP 核的 Quartus 项目中使用 Modelsim 进行仿真&#xff0c;本文基于 IP 核 RAM: 2-PORT&#xff0c;其他 IP 核类似。 ModelSim 路径设置 点击 Tools->Options 点击 EDA Tool Options&#xff0c;设置…

一张图片中有多个一样的目标物体,分别进行识别定位分割(Python实现)

需求&#xff1a; 一张图片中有多个目标物体&#xff0c;将多个目标物体进行识别分割定位 import cv2 import numpy as npdef show_photo(name,picture):cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()img_path r"test3.png" img cv2.imread(img…

Camunda BPM主要组件

Camunda BPM是使用java开发的,核心流程引擎运行在JVM里,纯java库,不依赖其他库或者底层操作系统。可以完美地与其他java框架融合,比如Spring。除了核心流程引擎外,还提供了一系列的管理,操作和监控工具。 1,工作流引擎 既适用于服务或者微服务编排,也适用于人工任务管…

FuTalk设计周刊-Vol.052

#AI漫谈 热点捕手 1.ChatGPT 大更新&#xff01;GPT-4 开始又变聪明了 OpenAI 官方宣布&#xff0c;新版 GPT-4 Turbo 今天开始向所有付费 ChatGPT 用户开放。 链接https://www.pconline.com.cn/focus/1733/17330089.html 2.刷爆多模态任务榜单&#xff01;贾佳亚团队Mini-G…

决策控制类软件项目的团队配置

决策控制类软件项目的团队配置怎样才是最合适的&#xff1f;目的就是实现高效的项目协作以及为企业降本增效。软件项目的主要费用来源是研发人员的开支以及差旅费用。 下面的思维导图从项目与产品的关系、团队架构、项目成员配置、项目可复制性、招聘这几点进行说明如何组织人…

Windows安装并启动Redis服务端(zip包)

一、Redis简介 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的基于内存的 Key - Value结构的数据库&#xff0c;遵守 BSD 协议&#xff0c;它提供了一个高性能的键值&#xff08;key-value&#xff09;存储系统&#xff0c;常用于缓存、消息队列、会话存储…

手机相册的照片彻底删除了怎么恢复?删除照片恢复的5种方法

在数字化时代&#xff0c;手机相册里装满了我们的生活点滴和珍贵回忆。然而&#xff0c;一不小心就可能误删那些意义非凡的照片。别担心&#xff0c;今天小编就给大家介绍5种恢复误删照片的方法&#xff0c;让你的回忆不再丢失&#xff01; 方法一&#xff1a;相册App的“最近删…

《最新出炉》系列入门篇-Python+Playwright自动化测试-40-录制生成脚本

宏哥微信粉丝群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 各种自动化框架都会有脚本录制功能&#xff0c; playwright这么牛叉当然也不例外。很早之前的selenium、Jmeter工具&#xff0c;发展到每种浏览器都有对应的录制插件。今天我们…

ROS2入门21讲__第19讲__Rviz:三维可视化显示平台

目录 前言 Rviz三维可视化平台 Rviz介绍 运行方法 彩色相机仿真与可视化 仿真插件配置 运行仿真环境 图像数据可视化 三维相机仿真与可视化 仿真插件配置 运行仿真环境 点云数据可视化 激光雷达仿真与可视化 仿真插件配置 运行仿真环境 点云数据可视化 Rviz v…

光伏无人机巡检的工作原理是什么?

随着科技的飞速发展&#xff0c;无人机技术已经深入到众多领域&#xff0c;其中光伏电站的巡检工作便是其应用的一个重要方向。光伏无人机巡检&#xff0c;通过搭载各种先进的传感器和设备&#xff0c;对光伏电站进行全面的、高效的、安全的检测&#xff0c;为电站的运维管理提…

win10安装rabbitmq

安装 第一步&#xff1a;下载并安装erlang RabbitMQ服务端代码是使用并发式语言Erlang编写&#xff0c;因此首先需要安装Erlang下载地址&#xff1a;http://www.erlang.org/downloads采用默认安装即可&#xff0c;选择适合的安装路径 添加环境变量 第二步&#xff1a;下载并…

力扣刷题---2206. 将数组划分成相等数对【简单】

题目描述&#x1f357; 给你一个整数数组 nums &#xff0c;它包含 2 * n 个整数。 你需要将 nums 划分成 n 个数对&#xff0c;满足&#xff1a; 每个元素 只属于一个 数对。 同一数对中的元素 相等 。 如果可以将 nums 划分成 n 个数对&#xff0c;请你返回 true &#xf…

PgSQL内核机制 - 算子执行统计元组个数

PgSQL内核机制 - 算子执行统计元组个数 我们在执行explain analyze观察执行计划执行情况时&#xff0c;时常通过每个算子实际执行结果来分析SQL的执行&#xff0c;其中有一项“rows XXX”表示执行的行数&#xff08;这里姑且先认为是执行的真实行数&#xff09;。但有些场景下…

java8新特性——函数式编程详解

目录 一 概述1.1 背景1.2 函数式编程的意义1.3 函数式编程的发展 Lambda表达式1.1 介绍1.2 使用Lambda的好处1.3 Lambda方法1.3.1 Lambda表达式结构1.3.2 Lambda表达式的特征 1.4 Lambda的使用1.4.1 定义函数式接口1.4.2 Lambda表达式实现函数式接口1.4.3 简化Lambda表达式1.4.…

计算机底层技术在AI时代的重要性

AI基础实施 为了迎接AI时代的全面到来&#xff0c;并满足极客星球同学们的学习需求&#xff0c;我们将组织一场AI技术全景入门分享, 会尽我所能&#xff0c;让大家能够全面了解AI技术&#xff0c;从AI大局观到核心技术&#xff0c;希望大家开阔一下AI的视野&#xff0c;本周第…

VMware虚拟机中ubuntu使用记录(10)—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …

python机器学习及深度学习在空间模拟与时间预测

原文链接https://mp.weixin.qq.com/s?__bizMzUyNzczMTI4Mg&mid2247628504&idx2&sn6fe3aeb9f63203cfe941a6bb63b49b85&chksmfa77a9e5cd0020f3aa4f01887e75b15096a182c2b5b42c1044787aa285c650f1469a0ef28aec&token2124656491&langzh_CN&scene21#we…

2024年春招高薪职业报告:大模型算法研究员领跑

近日&#xff0c;脉脉高聘发布的研究报告《2024春招高薪职业和人才洞察》&#xff08;以下简称《洞察》&#xff09;显示&#xff0c;2024年一季度&#xff0c;大模型算法研究员新发岗位以平均月薪6.4万元领跑高薪岗位榜。受人才培养周期和技术门槛影响&#xff0c;人工智能行业…