最近在遇到设置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的背景颜色不生效的情况。
参考: