当前位置:   article > 正文

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

[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);
    
    • 1
    • 2
    • 3
    • 4

2.设置停靠位置

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

3.设置浮动属性

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

4.设置移动属性

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

2.状态栏

0.是什么?

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

1.创建状态栏

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

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

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

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

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

3.浮动窗口

0.是什么?

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

1.浮动窗口的创建

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

2.设置停靠位置

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

3.添加Widget

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/991162
推荐阅读
相关标签
  

闽ICP备14008679号