[Qt][Qt窗口][下]详细讲解


1.工具栏

0.是什么?

  • ⼯具栏是应⽤程序中集成各种功能实现快捷键使⽤的⼀个区域

    • 可以有多个,也可以没有,它并不是应⽤程序中必须存在的组件
    • 它是⼀个可移动的组件,它的元素可以是各种窗⼝组件,它的元素通常以图标按钮的⽅式存在
  • 工具栏本质上是把菜单中的一些比较常用的选项,直接放到工具栏里了,直接点工具栏中的按钮就能快速生效

    • 工具栏本质上就是菜单中的一些选项的"快捷方式"
      请添加图片描述
  • 工具栏的大部分操作和菜单栏大同小异,如菜单项,快捷键,图标等

  • 如果一个QAction既是QMenu的子元素,又是QToolBar的子元素,释放的时候,时候会重复delete

    • 只会释放一次,不会重复delete

1.创建工具栏

  • 工具栏是需要手动创建出来的,自身不会自动创建
  • 调⽤QMainWindow类的addToolBar()来添加⼯具栏,每增加⼀个⼯具栏都需要调⽤⼀次该函数
    QToolBar* toolBar1 = new QToolBar(this);
    QToolBar* toolBar2 = new QToolBar(this);
    this->addToolBar(toolBar1);
    this->addToolBar(toolBar2);
    

2.设置停靠位置

  • ⼯具栏停靠位置的设置有两种⽅式
    • 在创建⼯具栏的同时指定其停靠的位置,指的是程序运⾏时⼯具栏默认所在的位置
    • ⽽使⽤setAllowedAreas()设置停靠位置,指的是⼯具栏允许其所停靠的位置
      • 可以同时设置多个方向,用|即可
  • 方式一:创建⼯具栏的同时指定其停靠的位置
    • 在创建⼯具栏的同时,也可以设置⼯具栏的位置,其默认位置是在窗⼝的最上⾯
    • 工具栏允许停靠的区域由QToolBar类提供的allowAreas()决定,其中可以设置的位置包括:
      • Qt::LeftToolBarArea:停靠在左侧
      • Qt::RightToolBarArea:停靠在右侧
      • Qt::TopToolBarArea:停靠在顶部
      • Qt::BottomToolBarArea:停靠在顶部
      • Qt::AllToolBarAreas:以上四个位置都可停靠
    QToolBar* toolBar = new QToolBar(this);
    this->addToolBar(Qt::LeftToolBarArea, toolBar);
    
  • 方式二:使⽤QToolBar类提供的setAllowedAreas()设置停靠位置
    // 只允许停靠在左侧或者右侧
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    

3.设置浮动属性

  • ⼯具栏的浮动属性可以通过QToolBar类提供的setFloatable()来设置
    • 函数原型void setFloatable(bool floatable)
    toolBar->setFloatable(true);
    

4.设置移动属性

  • 设置⼯具栏的移动属性可以通过QToolBar类提供的setMovable()来设置
    • 函数原型void setMovable(bool movable)
  • 说明
    • 若设置⼯具栏为不移动状态,则设置其停靠位置的操作就不会⽣效
    • 所以设置⼯具栏的移动属性类似于总开关的效果
    toolBar->setMovable(true);
    

2.状态栏

0.是什么?

  • 状态栏是应⽤程序中输出简要信息的区域,⼀般位于主窗⼝的最底部,⼀个窗⼝中最多只能有⼀个状态栏
  • Qt中,状态栏是通过QStatusBar类来实现的,在状态栏中可以显⽰的消息类型有:
    • 实时消息:如当前程序状态
    • 永久消息:如程序版本号,机构名称
    • 进度消息:如进度条提⽰,百分比提⽰

1.创建状态栏

  • 状态栏的创建是通过QStatusBar类提供的statusBar()来创建,存在就获取, 不存在就创建
    QStatusBar& stBar = statusBar();
    this->setStatusBar(stBar);
    

2.在状态栏中显示实时消息

  • 在状态栏中显⽰实时消息是通过showMessage()来实现
    • timeout参数是一个单位为ms的时间,如果不填(0),消息就会持续存在
    // 状态栏中显示大约2秒的"SnowK"
    stBar->showMessage("SnowK", 2000);
    

3.在状态栏中显示永久消息

  • 此处的永久消息是通过标签来显⽰的,addWidget():从左往右添加QLabel
    QStatusBar& stBar = statusBar();
    this->setStatusBar(stBar);
    
    // 创建标签
    QLabel* label = new QLabel("提示信息", this);
    
    // 将标签放入状态栏中
    stBar->addWidget(label);
    
  • 调整显示消息的位置,addPermanentidget():从右往左添加QLabel
    // 创建标签
    QLabel* label = new QLabel("右侧提示信息", this);
    
    // 将标签放入状态栏中
    stBar->addPermanentidget(label);
    

3.浮动窗口

0.是什么?

  • 在Qt中,浮动窗⼝也称之为铆接部件,浮动窗⼝⼀般是位于核⼼部件的周围,可以有多个
    • 可以认为是子窗口
  • 浮动窗⼝是通过QDockWidget类来实现浮动的功能

1.浮动窗口的创建

  • 浮动窗⼝的创建是通过QDockWidget类提供的构造⽅法QDockWidget()动态创建
    QDockWidget* dockerWidget = new QDockWidget("浮动窗口", this);
    this->addDockWidget(Qt::BottomDockWidgetArea, dockWidget);
    

2.设置停靠位置

  • 浮动窗⼝是位于中⼼部件的周围,可以通过QDockWidget类中提供setAllowedAreas()设置其 允许停靠的位置,其中可以设置允许停靠的位置有
    • Qt::LeftDockWidgetArea:停靠在左侧
    • Qt::RightDockWidgetArea:停靠在右侧
    • Qt::TopDockWidgetArea:停靠在顶部
    • Qt::BottomDockWidgetArea:停靠在底部
    • Qt::AllDockWidgetAreas:以上四个位置都可停靠
  • 示例:设置浮动窗⼝只允许上下停靠
    dkWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
    

3.添加Widget

  • 不能直接给这个浮动窗口添加子控件,而是需要创建出一个单独的QWidget,把要添加的控件加入到QWidget中,然后再把这个QWidget设置到QDockWidget
  • 由于QDockWidget中只能包含一个QWidget,要想添加更多的控件,就只能王QWidget中进行添加(多套一层)

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DieSnowK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值