利用qss设置QTextEdit背景颜色(背景透明)不生效的解决方法

本文记录了在Qt环境下,QTextEdit组件使用QSS设置背景颜色不生效的问题。当QTextEdit位于透明窗口中时,背景颜色设置会失效。解决方法包括在QSS中添加边框,无论是设置边框宽度为0还是非0,都能使背景颜色显示。此外,还介绍了如何设置QTextEdit背景透明。这些方法对于理解Qt中QTextEdit的样式设置和渲染机制具有参考价值。
摘要由CSDN通过智能技术生成

最近在遇到设置QTextEdit或者QTextEdit的派生类,利用qss设置background-color不生效,记录出现这种问题的情形,以及对应的解决办法。

问题的出现:
新建一个基于QWidget的工程,勾选ui文件,在界面上拖放一个QTextEdit,(QTextEdit嵌套在一个布局里,如下图的ui文件所示),其余保持默认设置就行。
在这里插入图片描述
在widget.cpp的构造函数中添加代码:

setAttribute(Qt::WA_TranslucentBackground);
this->setStyleSheet("QTextEdit{color: red; background-color: green;}");

运行效果:
在这里插入图片描述
textEdit的文字颜色变成了红色,背景颜色却是白色的,我们的qss中设置的QTextEdit的颜色是绿色的,没有生效。

解决方法一:

this->setStyleSheet("QTextEdit{color: red; background-color: green; border:1px solid red;}");

运行效果:
在这里插入图片描述

或者

this->setStyleSheet("QTextEdit{color: red; background-color: green; border:0px;}");

在这里插入图片描述
通过qss中的border设置为无边框,或者有边框都会让QTextEdit的背景颜色生效

如果想让QTextEdit的背景颜色透明,也是可以实现的:

this->setStyleSheet("QTextEdit{color: red; background-color: transparent; border:1px solid red;}");

在这里插入图片描述

以上测试的情况均是在窗口设置为透明的时候,才会出现QTextEdit的背景颜色不生效的情况。

参考:

qt5.7下QTextEdit 无法设置背景色透明的问题

QT QTextEdit无边框设置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值