Qt窗口(2)-工具栏
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);