Qt常用控件之标签QLabel
标签QLabel
QLabel
标签用来显示文本和图片,在 Qt 中使用频率很高。
1. Label属性
属性 | 说明 |
---|---|
text | QLabel 中的文本。 |
textFormat | 文本的格式。其中 Qt::PlainText 为纯文本;Qt::RichText 为富文本(支持 html 格式); Qt::MarkdownText 为 markdown 格式; Qt::AutoText 为根据内容自动决定文本格式。 |
pixmap | QLabel 内部包含的图片。 |
scaledContents | 为 true 表示内容自动拉伸填充,为 false 则不会。(如自动填充图片) |
alignment | 对齐方案。可以设置水平和垂直方向如何对齐。 |
wordWrap | 为 true 内部的文本会自动换行,为 false 则不会。 |
indent | 设置文本缩进,水平和垂直方向都生效。 |
margin | 内部文本和边框之间的边距。(与 indent 的不同点在于,margin 在上下左右四个方向都生效,而 indent 只生效两个方向) |
openExternalLink | 是否允许打开一个外部链接(如当 QLabel 文本包含一个 url 时)。 |
buddy | 让 QLabel 关联一个 “伙伴” ,点击 QLabel 时就会激活对应的伙伴(如伙伴是一个 QCheckBox ,那么该 QCheckBox 就会被选中)。 |
2. 更改label的文本格式
//widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setTextFormat(Qt::PlainText);ui->label->setText("这是一段纯文本");ui->label_2->setTextFormat(Qt::RichText);ui->label_2->setText("<b>这是一段富文本</b>");ui->label_3->setTextFormat(Qt::MarkdownText);ui->label_3->setText("## 这是一段markdown");}Widget::~Widget()
{delete ui;
}
3. QLabel设置图片
如果要对 QLabel
控件设置图片,可以使用 setPixmap()
接口设置 QLabel
的 pixmap
属性,将图片添加到 QLabel
中,然后将 setScaledContents(true)
,这样图片就会自动填充,与 QLabel
的大小保持一致。
接着,可以将 QLabel
设置为与窗口大小一致,使用:
void setGeometry(int x, int y, int w, int h)
void setGeometry(const QRect &)
但要注意的是,如果是直接设置值,那么当窗口被拖拽时,QLabel
的大小是不会随窗口大小改变的。实际上,当我们拖拽放大或缩小窗口时,会持续触发窗口的 resize
事件(resizeEvent)。同时,Qt 为该事件留下了一个 size()
接口,用于获取窗口改变后的 QRect
对象。
我们只需要重写该事件的虚函数,让每次拖拽窗口时,都更新 QLabel
的大小即可:
//widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setPixmap(QPixmap(":/jienigui.jpg"));ui->label->setScaledContents(true);}Widget::~Widget()
{delete ui;
}void Widget::resizeEvent(QResizeEvent *event)
{ui->label->setGeometry(0,0,event->size().width(),event->size().height());/*这里写this->width()也是可以的,主要是通过重写resizeEvent()让QLabel的大小随事件的触发进行调整*/}
注意要在 widget.h 里添加
resizeEvent
的声明,以及添加#include <QResizeEvent>
头文件。
拖拽窗口改变窗口的大小,图片会随之改变大小。
4. 设置QLabel文本对齐方式
首先为了方便查看 QLabel
的边界,可以在控件右侧的 QFrame 中设置 frameShape ,选择能看到四个边框的属性即可:
然后,在代码中使用 setAlignment()
接口设置文本的对齐方式即可,文本对齐有四个枚举变量:
枚举变量 | 作用 |
---|---|
Qt::AlignLeft | 左对齐 |
Qt::AlignRight | 右对齐 |
Qt::AlignTop | 上对齐 |
Qt::AlignBottom | 下对齐 |
Qt::AlignHCenter | 水平居中对齐 |
Qt::AlignVCenter | 垂直方向居中对齐 |
Qt::AlignBaseline | 垂直与基线对齐 |
Qt::AlignJustify | 水平方向调整间距两端对齐 |
可以使用
|
使用多种对齐方式,如Qt::AlignLeft|Qt::AlignTop
是左上对齐,Qt::AlignCenter
等价于Qt::AlignHCenter | Qt::AlignVCenter
。
5. 设置QLabel自动换行
使用 setWordWrap(true)
可以将 wordWrap
属性设置为自动换行:
//widge.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setWordWrap(true);ui->label->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落");}Widget::~Widget()
{delete ui;
}
6. 设置QLabel缩进
使用 setIndent(int px)
接口可以设置 QLabel
的缩进长度,填入一个整数表示缩进的像素。注意 ident
是全文缩进,即文本所有的行都会缩进该值,且 indent
只在两个方向上生效,具体哪个方向要看 alignment
是如何对齐的。
//widge.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setWordWrap(true);ui->label->setAlignment(Qt::AlignLeft);ui->label->setIndent(40);ui->label->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落");ui->label_2->setWordWrap(true);ui->label_2->setAlignment(Qt::AlignLeft|Qt::AlignTop);ui->label_2->setIndent(40);ui->label_2->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落");}Widget::~Widget()
{delete ui;
}
可以看到
label
设置为左对齐,只有左边被缩进了40
个像素,而label_2
设置了左上对齐,左边和上边都被缩进了40
个像素。
7. 设置QLabel边距
使用 setMargin()
接口可以设置 QLabel
的左右边距。与 indent
属性不同的是,margin
的边距在四个方向上都生效:
//widge.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setWordWrap(true);ui->label->setAlignment(Qt::AlignLeft);ui->label->setMargin(40);ui->label->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落");ui->label_2->setWordWrap(true);ui->label_2->setAlignment(Qt::AlignLeft|Qt::AlignTop);ui->label_2->setMargin(40);ui->label_2->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落");}Widget::~Widget()
{delete ui;
}
可以看到对齐方式没有影响到
margin
属性的边距。
8. QLabel设置伙伴关系
当 QLabel
设置了一个 CheckBox
为伙伴关系后,在 QLabel
的文本中写上 &[key]
(例如 &A
),可以将 Ctrl+A 设置为 QLabel
的快捷键,而 QLabel
与 CheckBox
绑定了伙伴关系,该 CheckBox
就会被选中。实际这个功能好像也没有什么用。
相关文章:
Qt常用控件之标签QLabel
标签QLabel QLabel 标签用来显示文本和图片,在 Qt 中使用频率很高。 1. Label属性 属性说明textQLabel 中的文本。textFormat文本的格式。其中 Qt::PlainText 为纯文本;Qt::RichText 为富文本(支持 html 格式); Qt:…...
基于Spring Boot的公司资产网站设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
网络安全知识--网络、网络安全产品及密码产品概述
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络结构 网络设备:交换机、路由器、负载均衡 安全设备: 通信网络安全类:通信安全、网络监测与控制 区域边界安全类:隔离类…...
【mysql中mvcc的含义和作用及原理】
MySQL中的MVCC(多版本并发控制)是一种用于提高数据库并发性能的机制,通过维护数据的多个版本,实现读写操作的无锁并发。以下是其核心要点: 1. MVCC的含义 全称:Multi-Version Concurrency Control…...
【Android】Android 悬浮窗开发 ( 动态权限请求 | 前台服务和通知 | 悬浮窗创建 )
文章目录 一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后返回处理 二、悬浮窗 前台服务和通知1、前台服务 启动 悬浮窗 的必要性① 保持悬浮窗存活② 悬浮窗的要求③ 悬浮窗版本兼容 2、其它类型服务简介① 前台服务…...
【FAQ】HarmonyOS SDK 闭源开放能力 —Live View Kit (1)
1.问题描述: 客户端创建实况窗后,通过Push kit更新实况窗内容,这个过程是自动更新的还是客户端解析push消息数据后填充数据更新?客户端除了接入Push kit和创建实况窗还需要做什么工作? 解决方案: 通过Pu…...
基于Flask的第七次人口普查数据分析系统的设计与实现
【Flask】基于Flask的第七次人口普查数据分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 基于Flask的人口普查可视化分析系统 二、项目界面展示 登录/注册 首页/详情 …...
java实现多图合并加字和画框等
java实现多图合并加字和画框等 在wutool中,封装了图片处理工具类,基于java自带的BufferedImage类,实现多图合并和加字、图片画框等。 关于wutool wutool是一个java代码片段收集库,针对特定场景提供轻量解决方案,只要…...
腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票
腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票 作者:某七年数据开发工程师 | 2025年02月23日 关键词:SQL窗口函数、连续问题、股票分析、腾讯面试题 一、问题背景与难点拆解 在股票量化分析场景中,"连续N天满足条件"是高频面试题类型。本题要求在单表stoc…...
Elasticsearch 自动补全搜索 - autocomplete
作者:来自 Elastic Amit Khandelwal 探索处理自动完成的不同方法,从基础到高级,包括输入时搜索、查询时间、完成建议器和索引时间。 在本文中,我们将介绍如何避免严重的性能错误、Elasticsearch 默认解决方案为何不适用以及重要的…...
大屏自适应终极方案:基于比例缩放的完美适配实践(Vue3版)
需求背景 在数据可视化大屏开发中,我们常面临这样的挑战:如何让1920*1080的设计稿在不同分辨率设备上完美呈现?传统的响应式布局难以应对复杂的大屏元素排布,本文介绍一种基于CSS3变换的终极适配方案 实现思路 本方案的核心是动…...
云计算中的API网关是什么?为什么它很重要?
在云计算架构中,API网关(API Gateway)是一个重要的组件,主要用于管理、保护和优化不同服务之间的接口(API)通信。简单来说,API网关就像是一个中介,它充当客户端和后端服务之间的“桥…...
前端ES面试题及参考答案
目录 let/const 与 var 的区别?TDZ 是什么? 箭头函数与普通函数的区别?箭头函数能否作为构造函数? 模板字符串的嵌套表达式和标签模板用法? 解构赋值的应用场景及对象 / 数组解构差异? 函数参数默认值的生效条件及暂时性死区问题? 展开运算符(...)在数组 / 对象中…...
【架构思维基础:如何科学定义问题】
架构思维基础:如何科学定义问题 一、问题本质认知 1.1 问题矛盾 根据毛泽东《矛盾论》,问题本质是系统内部要素间既对立又统一的关系。例如: 电商系统矛盾演变: 90年代:商品供给不足 vs 消费需求增长00年代&#x…...
【网络安全】常见的web攻击
1、SQL注入攻击 定义: 攻击者在HTTP请求中注入恶意的SQL代码,当服务器利用参数构建SQL语句的时候,恶意的SQL代码被一起构建,并在数据库中执行。 示例: 用户登录: 输入用户名xx, 密码 or 1 …...
ECOLOGY流程表单字段由单行文本改成多行文本
用户需要把单行文本改成多行文本 1、数据库端处理 select lwnr from FORMTABLE_MAIN_237 where lwnr is not null FORMTABLE_MAIN_237 有记录。DESCRIBE OA.FORMTABLE_MAIN_237 LWNR VARCHAR2(999) 由999改成4000 ALTER TABLE OA.FORMTA…...
AI发展迅速,是否还有学习前端的必要性?
今天有个小伙伴跟我讨论:“现在 AI 发展迅速,是否还有学习 JS 或者 TS 及前端知识的必要?” 我非常肯定地说: 是的,学习 JavaScript/TypeScript 以及前端知识仍然非常必要,而且在可预见的未来,…...
视频的分片上传
分片上传需求分析: 项目中很多地方需要上传视频,如果视频很大,上传到服务器需要很多时间 ,这个时候体验就会很差。所以需要前端实现分片上传的功能。 要实现分片上传,需要对视频进行分割,分割成不同的大小…...
pyside6学习专栏(二):程序图像资源的加载方式
pyside6中的QLabel控件可以加载图像和gif动画,可以直接从外部文件加载,也可以从QRC类型的文件(实际是一脚本文件)经编绎生成对应的资源.PY模块文件(就是将qrc文本中指定的资源文件的16制内容写入.py文件)来使用,本文对两种方式作了一简单的示…...
QQ登录测试用例报告
QQ登录测试用例思维导图 一、安全性测试用例 1. 加密传输与存储验证 测试场景:输入账号密码并提交登录请求。预期结果:账号密码通过加密传输(如HTTPS)与存储(如哈希加盐),无明文暴露。 2. 二…...
56. 合并区间 (LeetCode 热题 100)
题目来源: 56. 合并区间 - 力扣(LeetCode) 题目内容: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组&am…...
冒泡排序(详解)c++
冒泡排序(Bubble Sort)也是⼀种简单的排序算法。它的⼯作原理是每次检查相邻两个元素,如果前⾯ 的元素与后⾯的元素满⾜给定的排序条件,就将相邻两个元素交换。当没有相邻的元素需要交换时, 排序就完成了。 由于在算法的执⾏过程中࿰…...
CSS背景属性
<!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>CSS背景属性</title><style>.c1{/* …...
10种方法教你又小又清晰地压缩视频
视频压缩是有可能会损失画质的,但也可以通过一些方法尽量减少画质损失。在有效压缩视频大小的同时,尽量控制视频压缩画质在人眼无法察觉的范围内。下面就从10个角度向大家介绍10个不同的视频压缩方法,并推荐相关的视频压缩软件,整…...
当使用vcpkg安装的qt5时,在VS调用出现libcrypto-*-x64.dll不是有效路径时
英文解决站点 applocal.ps1 fails in Visual Studio 2019 because of wildcard path in VcpkgAppLocalDLLs Issue #28614 microsoft/vcpkg 虽然这个bug不影响生成exe文件,第一次会弹出该错误,再次运行就正常,vcpkg会把对应的libcrypto-*-x64.dll版本复制到exe路径下..但是对…...
AI大模型学习(四): LangChain(三)
Langchain构建代理 语言模型本身无法执行动作,他们只能输出文本,代理是使用大型语言模型(LLM)作为推理引擎来确定要执行的操作以及这些操作的输入应该是什么,然后这些操作的结果可以反馈到代理中,代理将决定是否需要更多的操作,或者是否可以结束 例如:我们想要查询现在北京的…...
JavaScript函数-arguments的使用
在JavaScript编程语言中,函数是构建复杂逻辑和实现代码复用的关键组件。虽然现代JavaScript(尤其是ES6及之后版本)提供了更多灵活的方式来处理函数参数(如剩余参数、默认参数等),但arguments对象仍然是一个…...
C# 从基础神经元到实现在0~9数字识别
训练图片:mnist160 测试结果:1000次训练学习率为0.1时,准确率在60%以上 学习的图片越多,训练的时候越长(比如把 epochs*10 10000或更高时)效果越好 using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Windo…...
【每日八股】计算机网络篇(一):概述
OSI 的 7 层网络模型? OSI(Open Systems Interconnection,开放互联系统)是由国际标准化组织(ISO)提出的一种网络通信模型。 自上而下,OSI 可以被分为七层,分别是:应用层…...
Jupyter里面的manim编程学习
1.Jupyterlab的使用 因为我之前一直都是使用的vscode进行manim编程的,但是今天看的这个教程使用的是Jupyter,我也很是好奇这个manim在Jupyter这样的交互式下面会生成怎么样的效果,所以今天尝试了jupyter,并且对于两个进行比较和说…...
Web刷题之PolarDN(简单)
1.swp 考点:敏感文件、preg_match()函数绕过 什么是swp文件: vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件。这个文件是一个临时交换文件,用来备份缓冲区中的内容。如果原文件名是data,那么swp文件…...
JVM 深入理解与性能优化
JVM(Java Virtual Machine,Java 虚拟机)是 Java 代码运行的核心,它负责 内存管理、类加载、字节码执行、垃圾回收(GC)和 JIT 编译。理解 JVM 有助于优化 Java 应用的性能,提高调试和排错能力。 …...
【人工智能】蓝耘智算平台盛大发布DeepSeek满血版:开创AI推理体验新纪元
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 蓝耘智算平台 蓝耘智算平台核心技术与突破元生代推理引擎快速入门:三步调用大模型接口,OpenAI SDK无缝兼容实战用例文…...
minio作为K8S后端存储
docker部署minio mkdir -p /minio/datadocker run -d \-p 9000:9000 \-p 9001:9001 \--name minio \-v /minio/data:/data \-e "MINIO_ROOT_USERjbk" \-e "MINIO_ROOT_PASSWORDjbjbjb123" \quay.io/minio/minio server /data --console-address ":90…...
关于 BK3633 上电时受串口 UART2 影响而无法启动的问题说明
1. 问题描述 BK3633 SDK 版本:BK3633_DesignKit_V06_2310 使用 BK3633 UART2 与指纹模块进行通讯,为了降低功耗,通过 GPIO 控制了指纹模块的供电电源。但每次给整个系统板子上电时,BK3633 很大概率会实际而无法正常运行程序&…...
运维Ansible面试题及参考答案
目录 简述 Ansible 的工作原理,它是如何实现对远程主机管理的? Ansible 是基于什么语言开发的?这门语言的特性对 Ansible 的功能实现有哪些帮助? 解释 Agentless 在 Ansible 中的含义,与基于 Agent 的自动化工具相比,优势体现在哪? Ansible 中的 Inventory 文件是什…...
Spring Boot 日志管理(官网文档解读)
摘要 本篇文章详细介绍了SpringBoot 日志管理相关的内容,文章主要参考官网文章的描述内容,并在其基础上进行一定的总结和拓展,以方便学习Spring Boot 的小伙伴能快速掌握Spring Boot 日志管理相关的内容。 日志实现方式 Sping Boot 的日志管…...
Svelte 最新中文文档教程(17)—— 生命周期钩子
前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1: Svelte 以…...
Windows 上源码安装 FastGPT
FastGPT 是一个强大的 AI RAG 平台,值得我们去学习了解。与常见的 Python 体系不同,Fast GPT 采用 Node.js/Next.js 平台(对于广大 JS 开发者或前端开发者比较亲切友好),安装或部署比较简单。虽然一般情况下推荐简单的…...
RT-Thread+STM32L475VET6——icm20608传感器
文章目录 前言一、板载资源二、具体步骤1.打开CubeMX进行配置1.1 使用外部高速时钟,并修改时钟树1.2 打开I2C3,参数默认即可(I2C根据自己需求调整)1.3 打开串口1.4 生成工程 2. 添加icm20608软件包3. 使能传感器,打开动态链接库4.…...
超高清大图渲染性能优化实战:从页面卡死到流畅加载
目录 问题背景:1.为什么大图会导致页面卡死?一、DOM树构建(HTML Parsing)二、 资源加载:下载完整图片文件(可能高达30MB)三、解码处理(Decoding & Rasterization)、四…...
基于javaweb的SpringBoot个人博客系统设计和实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
轻量级日志管理平台Grafana Loki
文章目录 轻量级日志管理平台Grafana Loki背景什么是Loki为什么使用 Grafana Loki?架构Log Storage Grafana部署使用基于 Docker Compose 安装 LokiMinIO K8s集群部署Loki采集Helm 部署方式和案例 参考 轻量级日志管理平台Grafana Loki 背景 在微服务以及云原生时…...
SOME/IP--协议英文原文讲解12(完结)
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.3 Compa…...
Linux 命令大全完整版(12)
Linux 命令大全 5. 文件管理命令 ln(link) 功能说明:连接文件或目录。语 法:ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--version][源文件或目录][目标文件或目录] 或 ln [-bdfinsv][-S <字尾备份字符串>][-V…...
AI学习第二,三天-Python基础
变量、运算符与数据类型详解 注释 在 Python 中,注释是用于增加代码可读性、解释代码功能但不会被程序执行的部分。 单行注释:使用 # 符号,从 # 开始到本行末尾的内容均为注释。例如: 收起 python # 这是一个单行注释ÿ…...
Nginx代理ElasticSearch
1、将ES的账号:密码通过Base64加密 假设账号密码如下: 账号:elastic密码:elastichuayunworld.com echo -n elastic:elastichuayunworld.com | base64 ZWxhc3RpYzplbGFzdGljQGh1YXl1bndvcmxkLmNvbQ2、在 Nginx 配置中传递认证信息 locatio…...
开源AI网络爬虫工具Crawl4AI
引言 在信息化时代,网络爬虫作为从互联网中提取信息的重要工具,扮演着至关重要的角色。Crawl4AI作为一款开源AI网络爬虫工具,凭借其功能强大和易用性,受到了广泛关注。本文将详细探讨Crawl4AI的定义、特点、优势,以及…...
实现 INFINI Console 与 GitHub 的单点登录集成:一站式身份验证解决方案
本文将为您详细解析如何通过 GitHub OAuth 2.0 协议,为 INFINI Console 实现高效、安全的单点登录(Single Sign-On, SSO)集成。通过此方案,用户可直接使用 GitHub 账户无缝登录 INFINI Console,简化身份验证流程&#…...
Linux系统安装MySQL5.7(其他版本类似)避坑指南
1.远程连接 在Linux系统安装好MySQL5.7数据库,不要以为就大功告成了后面还有大坑等着你踩了。宏哥这里介绍一下远程连接遇到的坑以及如何处理。由于征文要求安装环境教学除外宏哥这里就不介绍在Linux系统安装mysql数据库,有需要的可以自己百度一下。但是…...