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);
相关推荐
重生之小比特几秒前
【算法拾光】模拟|提莫攻击 + N 字形变换
算法·模拟
前端 贾公子13 分钟前
第 5 章:Codex 从可运行程序到可交付工具
java·前端·数据库
杨云龙UP14 分钟前
MySQL 主从复制管理:暂停、恢复、清理主从关系及命令执行位置
运维·数据库·mysql·主从配置·主从命令·reset replica·清除复制
gz927cool16 分钟前
Python 全栈应用最佳实践完整指南
开发语言·python·ai
道尔柯南17 分钟前
C++ 内存管理详解:从 malloc/free 到 new/delete
c++·面试
東隅已逝,桑榆非晚22 分钟前
AVL数实现
c++·笔记·学习·算法
yzs8731 分钟前
openGauss branch diff能力解析
数据库·oracle
CoderYanger34 分钟前
Java EE 进阶:5. Spring IoC&DI(第三弹):Spring DI
java·开发语言·spring boot·spring·面试·java-ee·mvc
思想觉悟37 分钟前
SEAndroid实战
android·linux·c++
AIFQuant39 分钟前
Python期货行情API接入:股指、黄金、原油多品种数据管道实战
开发语言·python·金融·区块链·量化开发