QLabel重绘实现圆角矩形图片/文本和图片同时显示

文章讨论了如何在Qt中的QLabel控件中遇到的问题,如图片圆角属性不生效、不能同时显示图片和文本等。作者提出通过继承QLabel并重绘解决这些问题,包括设置图片圆角、调整图文间距和实现文本省略等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QLabel 是Qt中一个很常用的原生基础控件,一般用于显示文本内容(支持富文本),文本可以设置支持鼠标选中复制,也可以设置在可视宽度内文本自动换行,另外还可以用于显示图片。

但是,使用QLabel显示图片时,qss样式设置的border-radius圆角属性是不生效的!

QLabel显示纯文本时,qss中设置了背景颜色后,border-radius圆角属性是有效的,而在显示图片时,border-radius圆角属性却会失效;另外,同一个QLabel无法同时显示图片和文本(设置富文本的方式可以,但是不灵活,图片和文字的间距无法调整)。

下图所示,同一个QLabel设置一样的qss样式后,显示图片和显示文本的圆角属性效果不同,显示图片时根本没有圆角:

所以我对 QLabel 的需求是:

1.显示图片时,可以给图片设置圆角;

2.同一个QLabel可以同时显示图片和文本,且可以设置图片在文字的左边或者右边,间距也可以调整,甚至文本会随尺寸变化(当文本不能完全显示时,变成省略号截断:右边截断/中间截断/左边截断);

以上两点需求都是原生QLabel无法支持的,所以需要继承QLbel重绘。

以下代码是简陋实现的Demo,看懂了你需要自己去完善它,封装成更加通用的控件,例如:提供更多接口去设置上下左右内边距,内容间距,图片尺寸,图片在文本的上下左右等。。。使劲魔改成适合自己的Label吧

mylabel.h

#ifndef MYLABEL_H
#define MYLABEL_H

#include &l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值