Qt窗口(2)-工具栏

Qt窗口(2)

QToolBar

使用这个表示工具栏对象,一个对象可以有多个工具栏,也可以没有,工具栏往往可以手动移动

添加工具栏的语法:

C++ 复制代码
this->addToolBar(toolBar);

而添加菜单栏的语法:

C++ 复制代码
this->setMenuBar(menuBar);

set VS add:

set包含替代的含义,add不包含

运行代码如下:

C++ 复制代码
//工具栏需要手动创建出来的,自身不会创建
    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);

运行结果如下:

添加图标的代码如下:

C++ 复制代码
//工具栏需要手动创建出来的,自身不会创建
    QToolBar*toolBar=new QToolBar();
    this->addToolBar(toolBar);

    QAction*action1=new QAction("保存");
    QAction*action2=new QAction("打开");
    action1->setIcon(QIcon(":/save.png"));
    action2->setIcon(QIcon(":/open.png"));
    toolBar->addAction(action1);
    toolBar->addAction(action2);

    connect(action1,&QAction::triggered,this,&MainWindow::handle1);

    connect(action2,&QAction::triggered,this,&MainWindow::handle2);

运行结果:

图标会覆盖文本

运用ToolTip可以使其悬停显示内容

代码如下:

C++ 复制代码
 //工具栏需要手动创建出来的,自身不会创建
    QToolBar*toolBar=new QToolBar();
    this->addToolBar(toolBar);

    QAction*action1=new QAction("保存");
    QAction*action2=new QAction("打开");
    action1->setToolTip("点击这里保存文件");
    action1->setIcon(QIcon(":/save.png"));
    action2->setIcon(QIcon(":/open.png"));
    toolBar->addAction(action1);
    toolBar->addAction(action2);

    connect(action1,&QAction::triggered,this,&MainWindow::handle1);

    connect(action2,&QAction::triggered,this,&MainWindow::handle2);

运行结果:

也可以结合菜单来使用:

运行结果:

如果一个QAction既是QMenu的也是QToolBar的,释放的时候会不会重复delete?

只会释放一次,不会重复delete

创建多个工具栏,工具栏是可以拖动的,这种状态称为"浮动"

代码如下:

C++ 复制代码
 	QToolBar*toolBar1=new QToolBar();
    QToolBar*toolBar2=new QToolBar();
    this->addToolBar(toolBar1);
    this->addToolBar(toolBar2);

    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);

运行结果:

也可以调整工具栏的位置:

代码如下:

C++ 复制代码
 QToolBar*toolBar1=new QToolBar();
    QToolBar*toolBar2=new QToolBar();
    this->addToolBar(toolBar1);
    this->addToolBar(Qt::LeftToolBarArea,toolBar2);

    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);

可以设置允许放置的区域:

代码如下:

C++ 复制代码
QToolBar*toolBar1=new QToolBar();
    QToolBar*toolBar2=new QToolBar();
    this->addToolBar(toolBar1);
    this->addToolBar(Qt::LeftToolBarArea,toolBar2);
    toolBar2->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    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);

也可以设置不可以浮动

代码如下:

C++ 复制代码
	//设置不允许浮动
    toolBar2->setFloatable(false);

更可以设置不移动:

C++ 复制代码
//设置不允许移动
    toolBar2->setMovable(false);

片转存中...(img-J9acoj57-1752829880136)]

也可以设置不可以浮动

代码如下:

C++ 复制代码
	//设置不允许浮动
    toolBar2->setFloatable(false);

更可以设置不移动:

C++ 复制代码
//设置不允许移动
    toolBar2->setMovable(false);
相关推荐
2601_949146536 小时前
Python语音通知API示例代码汇总:基于Requests库的语音接口调用实战
开发语言·python
萧曵 丶6 小时前
MongoDB 核心原理 + 高频面试题
数据库·mongodb
Trouvaille ~6 小时前
【Linux】UDP Socket编程实战(二):网络字典与回调设计
linux·运维·服务器·网络·c++·udp·操作系统
3GPP仿真实验室6 小时前
【Matlab源码】6G候选波形:OFDM-IM 索引调制仿真平台
开发语言·matlab
darling3316 小时前
mysql 自动备份以及远程传输脚本,异地备份
android·数据库·mysql·adb
Bruk.Liu6 小时前
(LangChain实战12):LangChain中的新型Chain之create_sql_query_chain
数据库·人工智能·sql·langchain
世界尽头与你6 小时前
MySQL InnoDB的 MVCC 实现机制
数据库·mysql
计算机学姐7 小时前
基于SpringBoot的校园社团管理系统
java·vue.js·spring boot·后端·spring·信息可视化·推荐算法
明洞日记7 小时前
【图解软考八股034】深入解析 UML:识别标准建模图示
c++·软件工程·软考·uml·面向对象·架构设计
葵花楹7 小时前
【算法题】【动态规划2】【背包动态规划】
算法·动态规划