我有一个子窗口小部件(QFrame),它有自己的样式表设置。在这个QFrame上有4个标签,我不想要边框。此QFrame的父窗口小部件是一个QWidget,border属性正在流入我的QFrame标签。
我可以通过直接设置每个标签的边框来消除这些,但我宁愿不必这样做。我只是想避免流血。我该怎么做?
BTW,这两个小部件(父节点和子节点)都是由第三个小部件创建的,它是一个QDialog。这个QDialog创建了父项,然后是子项,并将父项传递给它的构造函数中的子项。答案 0 :(得分:0)
您是否尝试过更具体的选择器?喜欢按对象名称选择吗? QLabel
继承QFrame
。因此,当您告诉您的父级QFrame
以某种方式行事时,您也会告诉所有继承QObject
的{{1}},例如QFrame
也具有相同的风格。
在文档中,它提前使用QLabel
和setObjectName
提及。
如果我们希望该属性仅适用于一个特定的QLineEdit,我们 可以使用
#objectName
为其命名并使用ID 选择器引用它:
QObject::setObjectName()
http://doc.qt.io/qt-5/stylesheet-examples.html
后来它有更多选择器的例子:
http://doc.qt.io/qt-5/stylesheet-examples.html#complex-selector-example
就像你在答案中已经提到的那样,另一种方法是为你的myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");
写出不同的风格。
Qt StyleSheets中的选择器与它们在CSS中的行为具有惊人的相似性。订购,其他选择器等可以让您非常具体地了解您想要应用样式的项目。
希望有所帮助。