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

Qt窗口——QToolBar

文章目录

    • 工具栏
    • 创建工具栏
    • 设置toolTip
    • 工具栏配合菜单栏
    • 工具栏浮动状态

工具栏

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

可以有多个,也可以没有。

创建工具栏

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QToolBar>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menuBar = new QMenuBar();this->setMenuBar(menuBar);QMenu* menu1 = new QMenu("文件");QMenu* menu2 = new QMenu("编辑");QAction* action1 = new QAction("新建");QAction* action2 = new QAction("打开");menu1->addAction(action1);menu1->addAction(action2);menuBar->addMenu(menu1);menuBar->addMenu(menu2);QToolBar* toolBar = new QToolBar();this->addToolBar(toolBar);QAction* action3 = new QAction("保存");toolBar->addAction(action3);connect(action3, &QAction::triggered, this, &MainWindow::handle);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::handle()
{qDebug() << "保存";
}

这里添加工具栏采用的是addToolBar

而添加菜单栏,采用的是setMenuBar

菜单栏只有一个,如果重复设置,就是新的替换旧的(set包含了替换)

add只是单纯的添加,重复设置就包含了多个,不包含替换

GIF 2024-9-18 20-38-01

一般工具栏都是图标的方式,我们也可以替换成图标显示

用qrc机制先将图片导进来,然后设置图标

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QToolBar>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menuBar = new QMenuBar();this->setMenuBar(menuBar);QMenu* menu1 = new QMenu("文件");QMenu* menu2 = new QMenu("编辑");QAction* action1 = new QAction("新建");QAction* action2 = new QAction("打开");menu1->addAction(action1);menu1->addAction(action2);menuBar->addMenu(menu1);menuBar->addMenu(menu2);QToolBar* toolBar = new QToolBar();this->addToolBar(toolBar);QAction* action3 = new QAction("ikun");action3->setIcon(QIcon(":/ikun2.png"));toolBar->addAction(action3);connect(action3, &QAction::triggered, this, &MainWindow::handle);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::handle()
{qDebug() << "你干嘛~";
}

GIF 2024-9-18 20-44-54

设置toolTip

这里设置的文本,虽然被图标覆盖了,但会以toolTip方式存在,即鼠标悬停在图标上,会显示文本提示信息。

image-20240918204701245

当然,我们也可以手动设置

image-20240918205040649

工具栏配合菜单栏

工具栏的QAction也可以出现在菜单中

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QToolBar>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menuBar = new QMenuBar();this->setMenuBar(menuBar);QMenu* menu1 = new QMenu("文件");QMenu* menu2 = new QMenu("编辑");QAction* action1 = new QAction("新建");QAction* action2 = new QAction("打开");menu1->addAction(action1);menu1->addAction(action2);menuBar->addMenu(menu1);menuBar->addMenu(menu2);QToolBar* toolBar = new QToolBar();this->addToolBar(toolBar);QAction* action3 = new QAction("ikun");//action3->setToolTip("唱跳rap篮球🏀");action3->setIcon(QIcon(":/ikun2.png"));toolBar->addAction(action3);//菜单添加工具menu1->addAction(action3);connect(action3, &QAction::triggered, this, &MainWindow::handle);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::handle()
{qDebug() << "你干嘛~";
}

GIF 2024-9-18 20-54-06

Tips:

这里的action3,既是QMenu的子元素,又是QToolBar的子元素。

这里释放的时候,Qt做了处理,任何一方先delete释放了,之后就不会再触发释放了。

工具栏浮动状态

#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("跳");QAction* action3 = new QAction("rap");QAction* action4 = new QAction("篮球");toolBar1->addAction(action1);toolBar1->addAction(action2);toolBar2->addAction(action3);toolBar2->addAction(action4);
}MainWindow::~MainWindow()
{delete ui;
}

GIF 2024-9-18 21-02-59

这里工具栏可以拖动,这叫做“浮动”状态。

我们可以通过代码进行设置:

  1. 工具栏初始位置
    image-20240918210555490

    这里的addToolBar是可以通过area参数指定位置的
    Qt::LeftToolBarArea:停靠左侧
    Qt::RightToolBarArea:停靠右侧
    Qt::TopToolBarArea:停靠在顶部
    Qt::BottomToolBarArea:停靠在底部
    Qt::AllToolBarArea:以上四个位置都可以停靠

    这些只是设置初始位置,还是可以通过鼠标拖拽移动位置的

  2. 工具栏允许停靠的边缘位置

    QToolBar里面有自己的方法setAllowAreas,设置只能停靠在哪边

  3. 工具栏是否允许浮动

    QToolBar自己的方法setFloatable,设置为true表明可以浮动(悬停在窗口任意位置),设置 为false表明只能停靠在四周(看setAllowAreas的具体设置,如果没设置,就四周都能停靠)

  4. 工具栏是否允许移动

    这个就完全不允许移动了,只能在一个位置固定,采用setMovable

#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);//不允许移动toolBar1->setMovable(false);QAction* action1 = new QAction("唱");QAction* action2 = new QAction("跳");QAction* action3 = new QAction("rap");QAction* action4 = new QAction("篮球");toolBar1->addAction(action1);toolBar1->addAction(action2);toolBar2->addAction(action3);toolBar2->addAction(action4);
}MainWindow::~MainWindow()
{delete ui;
}

GIF 2024-9-18 21-25-56

http://www.lryc.cn/news/446027.html

相关文章:

  • MySQL—存储过程详解
  • 2024ICPC网络赛2记录:CK
  • PerparedStatement概述
  • 联影医疗嵌入式面试题及参考答案(3万字长文)
  • Rust的作用?
  • 无人机之可承受风速的影响因素
  • HTML与JavaScript结合实现简易计算器
  • Docker网络原理
  • PyTorch 目标检测教程
  • 校园美食导航:Spring Boot技术的美食发现之旅
  • 51单片机 - DS18B20实验1-读取温度
  • go语言基础入门(一)
  • linux 基础(一)mkdir、ls、vi、ifconfig
  • DAMODEL丹摩智算:LLama3.1部署与使用
  • Spring Boot 配置全流程 总结
  • 爬虫技术初步自学
  • 【力扣 | SQL题 | 每日三题】力扣175, 176, 181
  • SpringBoot使用hutool操作FTP
  • 如何防止SQL注入攻击
  • Java List类
  • 使用 Internet 共享 (ICS) 方式分配ip
  • SMTP/IMAP服务发在线邮件时要用到
  • Threejs绘制圆锥体
  • 速通LLaMA3:《The Llama 3 Herd of Models》全文解读
  • Python网络爬虫获取Wallhaven壁纸图片(源码)
  • 智能化引领等保测评新时代:AI与大数据的深度融合
  • 深入解析:HTTP 和 HTTPS 的区别
  • 《动手学深度学习》笔记1.11——实战Kaggle比赛:预测房价+详细代码讲解
  • 数据结构:单链表实现信息管理
  • 【Linux】解锁文件描述符奥秘,高效缓存区的实战技巧