C++客户端Qt开发——Qt窗口(工具栏)
创始人
2024-12-07 04:35:16

2.工具栏

使用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()<<"触发打开"; }  

②工具栏中的action也能在菜单栏中显示出来

#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()函数决定,其中可以设置的位置包括:

  • Qt:LeftToolBarArea:停靠在左侧
  • Qt:RightToolBarArea:停靠在右侧
  • Qt:TopToolBarArea:停靠在顶部
  • Qt:BottomToolBarArea:停靠在底部
  • Qt::AllToolBarAreas:以上四个位置都可停靠

还可以使用QToolBar类提供的setAllowedAreas()函数设置停靠位置。

  • 只允许在左侧停靠:toolBar1->setAllowedAreas(Qt:LeftToolBarArea);
  • 只允许在右侧停靠:toolBar2->setAllowedAreas(Qt:RightToolBarArea);

设置工具栏的移动属性可以通过QToolBar类提供的setMovable()函数来设置。

  • 设置不允许浮动:toolBar2->setFloatable(false);
  • 设置不允许移动:toolBar2->setMovable(false);

说明:

在创建工具栏的同时指定其停靠的位置,指的是程序运行时工具栏默认所在的位置;而使用setAllowedAreas()函数设置停靠位置,指的是工具栏允许其所能停靠的位置。

相关内容

热门资讯

原创 百... 5 月 13 日,Create2026 百度 AI 开发者大会在北京盛大启幕。百度创始人李彦宏在会上...
英伟达CEO黄仁勋称五年前的G... IT之家 5 月 13 日消息,在 AI 需求进入爆发周期的背景下,GPU 成为最紧缺的算力资源之一...
埃尔温·薛定谔:物理学最不情愿... 今天,我们面对的是一位巨匠。 他叫埃尔温·薛定谔。 在翻开他的故事之前,我想请你做一件事:想象一个盒...
破解40万年前直立人“分子密码... 中新网北京5月13日电 (记者 孙自法)作为第一个走出非洲并广泛扩散至亚欧大陆及东南亚的关键古人类,...
前华为具身智能“1号员工”领衔... 5月13日消息,深圳欧拉万象科技有限公司(下称“欧拉万象”)宣布完成数亿元人民币融资,由招商局创投领...