将背景样式表设置为 QWidget 显示在所有控件上
我已将以下 CSS 设置为 QWidget 样式表:
QWidget { background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #00b7ea, stop: 1 #009ec3); /* Chrome10+,Safari5.1+ */ }
它工作正常,但是当我在画布上放置按钮或任何其他控件时,我会得到元素中包含的相同背景颜色。
有人可以帮我解决这个问题吗?
我尝试过使用 QFrame,但框架周围总是有一个边框,如下所示:
I have set the following CSS to the QWidget Stylesheet:
QWidget { background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #00b7ea, stop: 1 #009ec3); /* Chrome10+,Safari5.1+ */ }
It works fine, but when I put a button or any other control on the canvas, I get the same background colour included in the elements.
Can someone help me fix this.
I've tried using a QFrame but I always get a border around the Frame like this:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您为
QWidget
设置样式表时,该样式表将应用于该QWidget
以及该小部件的整个子层次结构。由于您使用QWidget
作为选择器,该样式将应用于任何QWidget
或QWidget
子类。QPushButton
是QWidget
的子类,因此样式规则适用于它。您可以通过多种方式使用选择器仅挑选出主 QWidget。在这种情况下,最简单的方法可能是使用
.QWidget
,它仅针对QWidget
而不是QWidget
子类。如果您最终在子层次结构中有其他
QWidget
,您可以通过使用Classname#objectName
标识类和objectName
属性来更具选择性。您应该阅读 Qt 文档的本节以获取更多信息。
When you set a style sheet for a
QWidget
, the style sheet is applied to thatQWidget
and the entire child hierarchy of that widget. Since you are usingQWidget
as a selector, the style will be applied to anyQWidget
orQWidget
subclass. AQPushButton
is a subclass ofQWidget
, so the style rule is applied to it.There are many ways you could single out just the main QWidget with a selector. In this case, it might be easiest just to use
.QWidget
which will target onlyQWidget
s and notQWidget
subclasses.If you end up having other
QWidget
s in the child hierarchy, you can be more selective by identifying the class andobjectName
property usingClassname#objectName
.You should read this section of the Qt docs for more info.