当前位置:   article > 正文

Qt---状态栏、工具栏、浮动窗口_qt 状态栏

qt 状态栏

工具栏

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

创建工具栏

工具栏与菜单栏不同,并不会自动创建,需要手动去创建出来并添加到窗口里。

QToolBar *toolBar = new QToolBar();
this->addToolBar(toolBar);
  • 1
  • 2

img

刚创建出来的工具栏是空白的,可以往里面添加一下菜单项

// 创建两个菜单项
QAction* action1 = new QAction("保存");
QAction* action2 = new QAction("打开");

// 添加菜单项到工具栏
toolBar->addAction(action1);
toolBar->addAction(action2);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

img
同样的这些菜单项都是可以点击的并可以编写槽函数。

一般来说工具栏都不会直接以文字的形式呈现,而是会以图片的形式呈现,所以可以给菜单项设置图标

// 给菜单项添加图标
action1->setIcon(QIcon(":/img/save.png"));
action2->setIcon(QIcon(":/img/open.png"));
  • 1
  • 2
  • 3

img

停靠位置

工具栏可以停在上下左右四个位置,并且可以设置初始的位置。

在 addToolBar 函数中的第一个参数可以指定位置:

  • Qt::LeftToolBarArea:左侧
  • Qt::RightToolBarArea:右侧
  • Qt::TopToolBarArea:顶部
  • Qt::BottomToolBarArea:底部
// 创建四个工具栏
QToolBar *toolBar1 = new QToolBar();
QToolBar *toolBar2 = new QToolBar();
QToolBar *toolBar3 = new QToolBar();
QToolBar *toolBar4 = new QToolBar();
this->addToolBar(Qt::LeftToolBarArea, toolBar1); // 左
this->addToolBar(Qt::RightToolBarArea, toolBar2); // 右
this->addToolBar(Qt::TopToolBarArea, toolBar3); // 上
this->addToolBar(Qt::BottomToolBarArea, toolBar4); // 下

// 创建四个菜单项
QAction* action1 = new QAction("保存1");
QAction* action2 = new QAction("保存2");
QAction* action3 = new QAction("保存3");
QAction* action4 = new QAction("保存4");

// 分别添加菜单项到工具栏
toolBar1->addAction(action1);
toolBar2->addAction(action2);
toolBar3->addAction(action3);
toolBar4->addAction(action4);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

img

因为工具栏默认是可以移动的,因此工具栏可以被拖动到别的位置停靠。

这时就可以有需求工具栏只能停在某些位置,就可以使用 setAllowedAreas 函数设置只能在某个位置停靠

// 设置工具栏只允许在左侧和右侧停靠
toolBar1->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
  • 1
  • 2

img

浮动性与移动

工具栏默认时开启可浮动的

img

可以通过 setFloatable 函数设置浮动性,例如:

// 关闭浮动
toolBar1->setFloatable(false);
  • 1
  • 2

关闭了浮动性之后,工具栏没有拖动到可停靠位置的话就会自动回到停靠位置

img

除了可浮动外,有些场景还会将工具栏固定式,也就是不能移动

// 设置不可移动
toolBar1->setMovable(false);
  • 1
  • 2

imgimg

注意看,设置了不可移动之后,工具栏上的几个小点就会消失不见。

状态栏

状态栏是应用程序中输出简要信息的区域

创建状态栏并显示消息

// 存在就获取, 不存在就创建
QStatusBar* statusBar = this->statusBar();
this->setStatusBar(statusBar);
  • 1
  • 2
  • 3

img

注意看右下角的消息,两秒后就消失了

当然也可以设置永久的消息提示,不过得借助控件来显示

// 显示永久消息
QLabel *l = new QLabel("hello qt", this);
statusBar->addWidget(l); // 将标签添加到状态栏
  • 1
  • 2
  • 3

img

这样就能永久显示一个消息了。

也可以将消息放到右侧显示

// 显示永久消息
QLabel *l = new QLabel("hello qt", this);
statusBar->addPermanentWidget(l); // 将标签添加到状态栏右侧
  • 1
  • 2
  • 3

两者的区别就在于调用的函数不同

img

浮动窗口

浮动窗口也称之为铆接部件看,⼀般是位于核心部件的周围可以有多个

创建浮动窗口

 // 创建浮动窗口
QDockWidget* dockWidget = new QDockWidget();
// 把浮动窗口加入到窗口中.
this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
  • 1
  • 2
  • 3
  • 4

img

设置停靠位置

其停靠位置的原理和工具栏类似

// 创建浮动窗口
QDockWidget* dockWidget1 = new QDockWidget();
QDockWidget* dockWidget2 = new QDockWidget();
QDockWidget* dockWidget3 = new QDockWidget();
QDockWidget* dockWidget4 = new QDockWidget();
// 把浮动窗口加入到窗口中.
this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget1);
this->addDockWidget(Qt::RightDockWidgetArea, dockWidget2);
this->addDockWidget(Qt::TopDockWidgetArea, dockWidget3);
this->addDockWidget(Qt::BottomDockWidgetArea, dockWidget4);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

img

往浮动窗口添加内容

和其他的不同,不能直接给这个浮动窗口添加控件。一个浮动窗口只能加入一个控件,基于这个特性,可以利用布局管理器来添加内容。

先创建一个控件,在这个控件中添加布局管理器,然后在这个布局管理器里先添加其他的控件,再将这个控件添加进浮动窗口。

// 浮动窗口设置标题
dockWidget->setWindowTitle("这是浮动窗口");

// 创建控件
QWidget* container = new QWidget();
dockWidget->setWidget(container);

// 创建布局管理器, 把布局管理器设置到控件中
QVBoxLayout* layout = new QVBoxLayout;
container->setLayout(layout);
// 创建其他控件添加到 layout 中.
QLabel* label = new QLabel("这是一个 QLabel");
QPushButton* button = new QPushButton("这是按钮");
layout->addWidget(label);
layout->addWidget(button);

// 将这个控件添加到浮动窗口
dockWidget->setWidget(container);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

img

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

闽ICP备14008679号