我有一个子小部件(QFrame),它具有自己的样式表设置。在此QFrame上,有4个我不需要边框的标签。这个QFrame的父窗口小部件是QWidget,border属性正在渗入我的QFrame标签。
我可以直接设置每个标签的边框来使它们消失,但是我宁愿不必这样做。我只是想避免泄漏。我该怎么做呢?
顺便说一句,这两个部件(父部件和子部件)都是由第三个部件QDialog创建的。这个QDialog创建了父级,然后是子级,并将父级传递给其构造函数中的子级。
最佳答案
您是否尝试过更具体的选择器?也喜欢按对象名称进行选择? QLabel
继承QFrame
。因此,当您告诉父QFrame
表现某种行为时,您还告诉所有继承QObject
的QFrame
,例如QLabel
也具有相同的样式。
在文档中,它在早期提到使用setObjectName
和#objectName
。
myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");
http://doc.qt.io/qt-5/stylesheet-examples.html
稍后,它提供了更多选择器示例:
http://doc.qt.io/qt-5/stylesheet-examples.html#complex-selector-example
就像您在答案中已经提到的那样,另一种方法是为
QLabel
编写不同的样式。Qt StyleSheets中的选择器与CSS中的选择器具有惊人的相似性。订购,其他选择器等可以让您非常明确地确定要应用样式的项目。
希望能有所帮助。