使用QToolBar表示工具栏对象,一个窗口可以有多个工具栏,也可以没有,工具栏往往也可以手动移动位置

#include "mainwindow.h" #include "ui_mainwindow.h" #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QToolBar* toolbar = new QToolBar(); this->addToolBar(toolbar); QAction* action1 = new QAction("保存"); action1->setIcon(QIcon(":/1.jpg")); QAction* action2 = new QAction("打开"); action2->setIcon(QIcon(":/2.jpg")); toolbar->addAction(action1); toolbar->addAction(action2); connect(action1,&QAction::triggered,this,&MainWindow::handle); connect(action2,&QAction::triggered,this,&MainWindow::close); } MainWindow::~MainWindow() { delete ui; } void MainWindow::handle() { qDebug()<<"触发保存"; } void MainWindow::close() { qDebug()<<"触发打开"; } 
#include "mainwindow.h" #include "ui_mainwindow.h" #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); //创建菜单栏 QMenuBar* menubar = this->menuBar(); this->setMenuBar(menubar); //创建菜单 QMenu* menu = new QMenu("文件"); menubar->addMenu(menu); //创建工具栏 QToolBar* toolbar = new QToolBar(); this->addToolBar(toolbar); QAction* action1 = new QAction("保存"); action1->setToolTip("点击这里保存文件"); action1->setIcon(QIcon(":/1.jpg")); QAction* action2 = new QAction("打开"); action2->setIcon(QIcon(":/2.jpg")); //菜单项设置到菜单中 menu->addAction(action1); menu->addAction(action2); //菜单项设置到工具栏中 toolbar->addAction(action1); toolbar->addAction(action2); connect(action1,&QAction::triggered,this,&MainWindow::handle); connect(action2,&QAction::triggered,this,&MainWindow::close); } MainWindow::~MainWindow() { delete ui; } void MainWindow::handle() { qDebug()<<"触发保存"; } void MainWindow::close() { qDebug()<<"触发打开"; } 如果一个QAction既是QMenu的子元素,又是QToolBar的子元素,释放的时候,是否会重复delete?
不会,qt的对象树机制处理好了这样的释放

工具栏允许停靠的区域由QToolBar类提供的allowAreas()函数决定,其中可以设置的位置包括:
还可以使用QToolBar类提供的setAllowedAreas()函数设置停靠位置。
toolBar1->setAllowedAreas(Qt:LeftToolBarArea);toolBar2->setAllowedAreas(Qt:RightToolBarArea);设置工具栏的移动属性可以通过QToolBar类提供的setMovable()函数来设置。
toolBar2->setFloatable(false);toolBar2->setMovable(false);说明:
在创建工具栏的同时指定其停靠的位置,指的是程序运行时工具栏默认所在的位置;而使用setAllowedAreas()函数设置停靠位置,指的是工具栏允许其所能停靠的位置。
上一篇:红米k70e大概多少钱
下一篇:为什么电脑上的文件会消失