Qt窗口(2)-工具栏

发布于:2025-07-21 ⋅ 阅读:(13) ⋅ 点赞:(0)

Qt窗口(2)

QToolBar

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

添加工具栏的语法:

this->addToolBar(toolBar);

而添加菜单栏的语法:

this->setMenuBar(menuBar);

set VS add:

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

运行代码如下:

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

运行结果如下:

在这里插入图片描述

添加图标的代码如下:

//工具栏需要手动创建出来的,自身不会创建
    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可以使其悬停显示内容

代码如下:

 //工具栏需要手动创建出来的,自身不会创建
    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

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

代码如下:

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

运行结果:

在这里插入图片描述

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

代码如下:

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

在这里插入图片描述

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

代码如下:

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

也可以设置不可以浮动

代码如下:

	//设置不允许浮动
    toolBar2->setFloatable(false);

更可以设置不移动:

//设置不允许移动
    toolBar2->setMovable(false);

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

也可以设置不可以浮动

代码如下:

	//设置不允许浮动
    toolBar2->setFloatable(false);

更可以设置不移动:

//设置不允许移动
    toolBar2->setMovable(false);

网站公告

今日签到

点亮在社区的每一天
去签到