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

本文详细介绍了在Qt应用中创建工具栏、设置停靠位置、控制浮动性和移动性,以及状态栏的创建和使用,包括浮动窗口的添加内容方法。
摘要由CSDN通过智能技术生成

工具栏

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

创建工具栏

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

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

img

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

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

// 添加菜单项到工具栏
toolBar->addAction(action1);
toolBar->addAction(action2);

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

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

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

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);

img

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

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

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

img

浮动性与移动

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

img

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

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

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

img

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

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

imgimg

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

状态栏

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

创建状态栏并显示消息

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

img

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

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

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

img

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

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

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

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

img

浮动窗口

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

创建浮动窗口

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

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);

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);

img

Qt框架中,工具栏QToolBar)和状态栏(QStatusBar)是GUI应用程序中常用到的两种控件。它们为用户提供了一个界面友好的方式来与应用程序进行交互。 工具栏通常位于窗口的顶部或侧边,提供快速访问的常用功能。使用工具栏可以使得应用程序的界面更加直观易用。 状态栏则通常位于主窗口的底部,用于显示应用程序的状态信息,如当前操作的提示、文件状态、光标位置等。 以下是使用QToolBar和QStatusBar的基本步骤: ### QToolBar 1. 创建一个QToolBar实例。 2. 使用`addAction()`或`addWidget()`方法添加按钮或小部件到工具栏。 3. 将工具栏添加到窗口中,通常使用`addToolBar()`方法。 ```cpp // 创建工具栏 QToolBar *toolBar = new QToolBar("工具栏", this); addToolBar(toolBar); // 向工具栏添加按钮 QAction *action = new QAction("新操作", this); toolBar->addAction(action); // 或者添加小部件 QWidget *widget = new QWidget(this); toolBar->addWidget(widget); ``` ### QStatusBar 1. 获取主窗口的QStatusBar。 2. 使用`addWidget()`或`showMessage()`方法在状态栏中添加信息或控件。 3. 如果需要,可以隐藏状态栏的某些部分或整个状态栏。 ```cpp // 获取状态栏 QStatusBar *statusBar = this->statusBar(); // 在状态栏显示文本消息 statusBar->showMessage("准备就绪", 3000); // 显示3秒 // 添加控件到状态栏 QWidget *widget = new QWidget(this); statusBar->addWidget(widget); ``` ### 附加说明 - `QToolBar`可以使用`setAllowedAreas()`方法设置其可出现的位置(上下左右等)。 - `QToolBar`和`QStatusBar`都可以通过`setOrientation()`方法来设置其方向(水平或垂直)。 - `QToolBar`可以被浮动或停靠(通过调用`toggleViewAction()`或通过设置其浮点属性)。 - `QStatusBar`提供了`addPermanentWidget()`方法来添加永久性小部件,这些小部件不会随着状态栏消息的更新而移动。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CHJBL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值