C++客户端Qt开发——Qt窗口(工具栏)

打印 上一主题 下一主题

主题 542|帖子 542|积分 1626

2.工具栏

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



  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include<QToolBar>
  4. #include<QDebug>
  5. MainWindow::MainWindow(QWidget *parent)
  6.     : QMainWindow(parent)
  7.     , ui(new Ui::MainWindow)
  8. {
  9.     ui->setupUi(this);
  10.     QToolBar* toolbar = new QToolBar();
  11.     this->addToolBar(toolbar);
  12.     QAction* action1 = new QAction("保存");
  13.     action1->setIcon(QIcon(":/1.jpg"));
  14.     QAction* action2 = new QAction("打开");
  15.     action2->setIcon(QIcon(":/2.jpg"));
  16.     toolbar->addAction(action1);
  17.     toolbar->addAction(action2);
  18.     connect(action1,&QAction::triggered,this,&MainWindow::handle);
  19.     connect(action2,&QAction::triggered,this,&MainWindow::close);
  20. }
  21. MainWindow::~MainWindow()
  22. {
  23.     delete ui;
  24. }
  25. void MainWindow::handle()
  26. {
  27.     qDebug()<<"触发保存";
  28. }
  29. void MainWindow::close()
  30. {
  31.     qDebug()<<"触发打开";
  32. }
复制代码
②工具栏中的action也能在菜单栏中显示出来



  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include<QToolBar>
  4. #include<QDebug>
  5. MainWindow::MainWindow(QWidget *parent)
  6.     : QMainWindow(parent)
  7.     , ui(new Ui::MainWindow)
  8. {
  9.     ui->setupUi(this);
  10.     //创建菜单栏
  11.     QMenuBar* menubar = this->menuBar();
  12.     this->setMenuBar(menubar);
  13.     //创建菜单
  14.     QMenu* menu = new QMenu("文件");
  15.     menubar->addMenu(menu);
  16.     //创建工具栏
  17.     QToolBar* toolbar = new QToolBar();
  18.     this->addToolBar(toolbar);
  19.     QAction* action1 = new QAction("保存");
  20.     action1->setToolTip("点击这里保存文件");
  21.     action1->setIcon(QIcon(":/1.jpg"));
  22.     QAction* action2 = new QAction("打开");
  23.     action2->setIcon(QIcon(":/2.jpg"));
  24.     //菜单项设置到菜单中
  25.     menu->addAction(action1);
  26.     menu->addAction(action2);
  27.     //菜单项设置到工具栏中
  28.     toolbar->addAction(action1);
  29.     toolbar->addAction(action2);
  30.     connect(action1,&QAction::triggered,this,&MainWindow::handle);
  31.     connect(action2,&QAction::triggered,this,&MainWindow::close);
  32. }
  33. MainWindow::~MainWindow()
  34. {
  35.     delete ui;
  36. }
  37. void MainWindow::handle()
  38. {
  39.     qDebug()<<"触发保存";
  40. }
  41. void MainWindow::close()
  42. {
  43.     qDebug()<<"触发打开";
  44. }
复制代码
假如一个QAction既是QMenu的子元素,又是QToolBar的子元素,释放的时间,是否会重复delete?
不会,qt的对象树机制处理好了这样的释放
③设置多个工具栏



工具栏答应停靠的区域由QToolBar类提供的allowAreas()函数决定,此中可以设置的位置包括:


  • QteftToolBarArea:停靠在左侧
  • Qt:RightToolBarArea:停靠在右侧
  • Qt:TopToolBarArea:停靠在顶部
  • Qt:BottomToolBarArea:停靠在底部
  • Qt::AllToolBarAreas:以上四个位置都可停靠
还可以利用QToolBar类提供的setAllowedAreas()函数设置停靠位置。


  • 只答应在左侧停靠:toolBar1->setAllowedAreas(QteftToolBarArea);


  • 只答应在右侧停靠:toolBar2->setAllowedAreas(Qt:RightToolBarArea);
设置工具栏的移动属性可以通过QToolBar类提供的setMovable()函数来设置。


  • 设置不答应浮动:toolBar2->setFloatable(false);
  • 设置不答应移动:toolBar2->setMovable(false);
阐明:
在创建工具栏的同时指定其停靠的位置,指的是程序运行时工具栏默认地点的位置;而利用setAllowedAreas()函数设置停靠位置,指的是工具栏答应其所能停靠的位置。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表