我有一个子小部件(QFrame),它具有自己的样式表设置。在此QFrame上,有4个我不需要边框的标签。这个QFrame的父窗口小部件是QWidget,border属性正在渗入我的QFrame标签。

我可以直接设置每个标签的边框来使它们消失,但是我宁愿不必这样做。我只是想避免泄漏。我该怎么做呢?

顺便说一句,这两个部件(父部件和子部件)都是由第三个部件QDialog创建的。这个QDialog创建了父级,然后是子级,并将父级传递给其构造函数中的子级。

最佳答案

您是否尝试过更具体的选择器?也喜欢按对象名称进行选择? QLabel继承QFrame。因此,当您告诉父QFrame表现某种行为时,您还告诉所有继承QObjectQFrame,例如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中的选择器具有惊人的相似性。订购,其他选择器等可以让您非常明确地确定要应用样式的项目。

希望能有所帮助。

10-06 15:56