Qt (10)【Qt窗口 —— 如何在窗口中创建浮动窗口和状态栏】

news2024/9/29 7:32:05

阅读导航

  • 引言
  • 一、如何在窗口中创建浮动窗口
    • 1. 浮动窗口的创建
    • 2. 设置停靠的位置
  • 二、如何在窗口中创建状态栏
    • 1. 状态栏的创建
    • 2. 在状态栏中显示实时消息
    • 3. 在状态栏中显示永久消息
    • 4. 调整显示消息的位置,并加上进度条

引言

在上一篇文章中,我们一同探索了Qt窗口设计中的精髓,特别是如何巧妙地构建菜单栏与工具栏,为应用程序的用户界面增添了层次感和易用性。这些元素不仅提升了用户交互的效率,也极大地丰富了应用程序的功能展现。今天,我们将继续深化Qt窗口管理的探索之旅,聚焦于一个同样重要且实用的主题——如何在Qt窗口中创建浮动窗口以及状态栏。

一、如何在窗口中创建浮动窗口

在Qt框架中,浮动窗口通常也被称为可停靠窗口(Dock Widgets),它们通过QDockWidget类来实现其浮动和停靠的特性。QDockWidget提供了一种灵活的方式,使得窗口能够围绕主窗口(或核心部件)的边缘停靠,同时也支持脱离主窗口成为独立的浮动窗口。一个应用程序中可以包含多个QDockWidget实例,它们可以根据用户的需要进行停靠、浮动或隐藏,从而提供丰富的界面布局选项和增强的用户体验。

在这里插入图片描述

1. 浮动窗口的创建

浮动窗口的创建是通过QDockWidget类提供的构造函数QDockWidget()来动态实现的。示例如下:

// 浮动窗口  
QDockWidget *dockwidget = new QDockWidget("浮动窗口", this);  
// 将浮动窗口置于当前窗口中  
addDockWidget(Qt::BottomDockWidgetArea, dockwidget);

2. 设置停靠的位置

浮动窗口是位于中心部件周围的可停靠部件,其停靠位置可以通过QDockWidget类中的setAllowedAreas()函数进行设置。该函数允许您指定浮动窗口可以停靠的区域,包括以下几个选项:

  • Qt::LeftDockWidgetArea:停靠在左侧。
  • Qt::RightDockWidgetArea:停靠在右侧。
  • Qt::TopDockWidgetArea:停靠在顶部。
  • Qt::BottomDockWidgetArea:停靠在底部。
  • Qt::AllDockWidgetAreas:以上四个位置均可停靠。

示例如下:如果您想设置浮动窗口只允许停靠在顶部和底部,可以这样做:

QDockWidget *dockWidget = new QDockWidget("示例浮动窗口", this);
//设置浮动窗口的停靠区域,只允许上下停靠
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

二、如何在窗口中创建状态栏

状态栏是应用程序中一个重要的组成部分,用于在主窗口的最底部区域输出简要的信息给用户。每个窗口通常仅包含一个状态栏,以集中展示与当前操作或程序状态相关的关键信息。在Qt框架中,状态栏的实现依赖于QStatusBar类,它提供了一套丰富的接口来管理和展示不同类型的信息。
在这里插入图片描述
在这里插入图片描述
QStatusBar支持显示多种类型的消息,以满足不同场景下的需求:

  • 实时消息:这类消息通常用于反映当前程序的运行状态或用户的即时操作反馈,如“正在加载数据…”或“文件已成功保存”。实时消息可能会根据程序的执行流程或用户交互而动态变化。

  • 永久消息:与实时消息不同,永久消息显示的是不会频繁变动的信息,如程序的版本号、开发机构的名称或版权声明等。这些信息对于程序的识别、版本追踪或版权保护具有重要意义。

  • 进度消息:它可以通过进度条或百分比的形式,直观地展示任务的完成进度,帮助用户了解任务的执行状态和剩余时间。

1. 状态栏的创建

在Qt中,状态栏的访问是通过QMainWindow类提供的statusBar()函数来实现的,该函数返回对当前窗口状态栏(QStatusBar对象)的引用,允许开发者对其进行配置或操作。

// 获取默认的状态栏  
QStatusBar *stbar = statusBar();  
  
// 将状态栏置于窗口中
this->setStatusBar(stbar);

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

在Qt的状态栏中显示实时消息,是通过调用QStatusBar对象的showMessage()函数来实现的。这个函数允许开发者指定要显示的消息内容,并可选择性地设置消息显示的持续时间。

示例代码如下:

// 假设statusBar()返回的是当前窗口的状态栏对象
statusBar()->showMessage("这是一个实时消息", 2000); // 消息将显示2000毫秒(即2秒)

如果省略时间参数或将其设置为0,消息将一直显示,直到被另一个showMessage()调用替换。

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

在Qt的状态栏中,要实现类似永久消息的效果,可以通过向状态栏中添加一个或多个QLabel(或其他QWidget)来实现。

示例代码如下:

// 创建状态栏  
QStatusBar *stbar = statusBar();  
// 将状态栏置于窗口中
this->setStatusBar(stbar);
// 创建标签  
QLabel* label = new QLabel("提示信息", this);  
// 将标签放入状态栏中  
stbar->addWidget(label);

🎯显示效果如下:
在这里插入图片描述

4. 调整显示消息的位置,并加上进度条

// 创建一个QProgressBar对象,用于在状态栏中显示进度条  
QProgressBar* progressBar = new QProgressBar();  
progressBar->setRange(0, 100);  
progressBar->setValue(50); 
statusBar->addWidget(progressBar);  

// 这个按钮将被添加到状态栏的右侧,并作为永久部件存在,不会自动调整大小  
QPushButton* button = new QPushButton("右侧提示信息");  
  
// 将按钮作为永久部件添加到状态栏的右侧  
statusBar->addPermanentWidget(button);  

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2066671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(6_3_1)——图的广度优先遍历

树和图的广度优先遍历区别 树的广度优先遍历&#xff1a; 图的广度优先遍历&#xff1a; 代码&#xff1a; 注:以下代码只适合连通图 #include <stdio.h> #include <stdbool.h>#define MAX_VERTEX_NUM 100typedef struct ArcNode {int adjvex; // 该边所指向的顶…

慧灵夹爪:工业智能的创新先锋

慧灵作为一个知名老品牌&#xff0c;其机器人产品在众多场景中广为人知。随着智能化、自动化技术的不断提升&#xff0c;智能工业飞速发展&#xff0c;慧灵夹爪在其中发挥的作用也越来越多。 在工业自动化生产中&#xff0c;精准与灵活是衡量设备性能的重要标尺。慧灵夹爪以其卓…

Criteria 是干什么用的?

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 &#x1f393;擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号&#xff1a;热爱技术的小郑。回复 Java全套视频教程 或 前端全套视频…

简易电压表设计验证

前言 电压表是测量电压的一种仪器。由永磁体、线圈等构成。电压表是个相当大的电阻器&#xff0c;理想的认为是断路。初中阶段实验室常用的电压表量程为0~3V和0~15V。 传统的指针式电压表包括一个灵敏电流计&#xff0c;在灵敏电流计里面有一个永磁体&#xff0c;在电流计的两个…

GenAI 的产品:快速行动,但失败

2022 年秋季&#xff0c;我正在做一个很酷的项目。是的&#xff0c;你猜对了——使用公司特定的数据对预先训练的 LLM&#xff08;Bert&#xff09;进行微调。 然而&#xff0c;很快 ChatGPT 就发布了&#xff0c;并席卷了全世界。既然已经有一门非常强大的 LLM 了&#xff0c…

支持AI智能搜索的知识库管理系统有哪些?分享4个软件

引言 在数字化时代&#xff0c;知识的获取、管理和利用已成为企业竞争力的重要组成部分。随着信息量的爆炸性增长&#xff0c;如何快速、准确地从海量数据中检索出有价值的知识&#xff0c;成为企业面临的一大挑战。支持AI智能搜索的知识库管理系统能够快速准确地检索信息&…

【前端】vue监视属性和计算属性对比

首先分开讲解各个属性的作用。 1.计算属性 作用&#xff1a;用来计算出来一个值&#xff0c;这个值调用的时候不需要加括号&#xff0c;会根据依赖进行缓存&#xff0c;依赖不变&#xff0c;computed的值不会重新计算。 const vm new Vue({el:#root,data:{lastName:张,firstNa…

严重腰椎滑脱、无法走路,江山邦尔骨科医院机器人辅助手术为患者完美复位

8月8日上午&#xff0c;53岁的李清&#xff08;化名&#xff09;扶着腰、跛脚走进江山邦尔骨科医院。接诊他的&#xff0c;是江山邦尔骨科医院脊柱科的林科院长。 李清和林院长说&#xff0c;自己已有长达两年的腰痛史&#xff0c;最近还伴随右腿麻木及跛行的症状&#xff0c;严…

深度解析上海我店 三年突破一百亿销售额!

在当今数字化时代的大潮中&#xff0c;消费模式正经历着翻天覆地的变革。上海我店网络科技有限公司&#xff08;简称“我店”&#xff09;&#xff0c;凭借其创新的“互联网实体终端”融合商业模式与独特的绿色积分体系&#xff0c;在消费市场中异军突起&#xff0c;成为引领行…

ClkLog常见问题-埋点集成篇Sec. 1

本篇主要解答ClkLog使用过程中【埋点集成】阶段的常见问题。 1.【指标项数据统计】 问&#xff1a;数据概览无法看到数据。 答&#xff1a;如果数据概览所有指标项都没有数据&#xff0c;则需要先检查埋点数据是否接收成功&#xff1b;如果只是会话相关数据&#xff08;访问次数…

缺陷检测之Anomalib

缺陷检测的现状 工业缺陷数据有一个比较显著的特征&#xff1a;样本不平衡。绝大部分采集得到的工业数据都是没有缺陷的&#xff0c;这样一来&#xff0c;正样本的数据在模型训练中根本没有起到作用&#xff0c;负样本又太少&#xff0c;很难训练得到有效的模型。使用有监督学…

六西格玛与5S管理体系并行落地,实现生产事件精益管理

在现代制造业中&#xff0c;六西格玛管理和5S管理体系是提升生产效率和质量控制的重要工具。六西格玛以其严格的数据分析方法帮助企业减少过程中的变异和缺陷&#xff0c;而5S管理则通过优化工作环境和流程&#xff0c;确保生产线的整洁、有序和高效。如何将这两大管理体系成功…

wpf livechart 绘制笛卡尔曲线

先上图&#xff1a; 代码部分&#xff1a; <GroupBox Header"各生产线生产量趋势"><Grid><Grid.RowDefinitions><RowDefinition Height"45"/><RowDefinition Height"auto"/><RowDefinition/></Grid.RowD…

第R1周: RNN-心脏病预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、什么是RNN RNN&#xff08;Recurrent Neural Network&#xff09;是一种特殊的神经网络&#xff0c;它能够处理序列数据&#xff0c;如时间序列、文本序列…

MedGraphRAG:医学版 GraphRAG

MedGraphRAG&#xff1a;医学版 GraphRAG 提出我的解法思路 MedGraphRAG 大纲解法大纲 解法拆解U-retrieve 双向检索 分析性关联图创意视角MedGraphRAG 对比 传统知识图谱大模型现在医疗知识图谱的问题MedGraphRAG的三层层级图结构&#xff0c;能不能让普通的医疗知识图谱&…

线程——函数式创建线程threading模块,继承式创建线程,Lock对象解决多线程不安全问题,线程模型中的生产者消费者模式

调度程序内的多任务使用多进程&#xff0c;调度一个进程内的多任务使用多线程 函数式创建线程的方式threading模块 在Python中&#xff0c;创建线程主要依赖于threading模块。 使用threading模块中的Thread类&#xff0c;你可以很容易地基于函数模式创建线程。基本步骤包括&…

Linux | 文件描述符fd详解及重定向技术的应用

多谢梅花&#xff0c;伴我微吟。 - 《高阳台除夜》(韩疁) 2024.8.23 目录 1、文件描述符fd 文件操作符概念(简单带过) 重点&#xff1a;如何理解文件操作符使得系统实现了设备无关性&#xff1f;&#xff08;使得操作系统无需关心具体的硬件细节&#xff09; 示例代码:标准输入…

SAP BW:QUERY数据结果写入ADSO

作者 idan lian 如需转载备注出处 如果对你有帮助&#xff0c;请点赞收藏~~~ 需求背景 客户基于QUERY进行报表展示&#xff0c;现需迁移到永洪报表平台&#xff0c;query中的变量参数&#xff0c;公式等无法直接生成视图&#xff0c;query相对复杂&#xff0c;不想直接在视图…

流动会场:便捷、经济与声学效果的理想融合—轻空间

在现代活动策划中&#xff0c;选择合适的场地至关重要。流动会场作为一种新型移动空间&#xff0c;不仅具备便捷性和高性价比&#xff0c;还以其优异的声学效果&#xff0c;成为各类会议、展览、演出等活动的理想选择。 便捷安装&#xff0c;快速搭建 流动会场的模块化设计使其…

P-One如何测试一个场景集包含多个接口

P-One是泽众软件自主研发的一站式性能测试平台&#xff0c;集管理、设计、压测、监控以及分析于一体的全方位性能测试解决方案&#xff0c;适用于各种非功能测试场景&#xff1a;压力测试、负载测试、稳定性测试、可靠性测试、容量测试等。 在实际业务场景中&#xff0c;如电商…