导致样式表流失到子窗口小部件的原因

时间:2015-02-16 22:34:57

标签: c++ qt qt-creator qtstylesheets

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

我可以通过直接设置每个标签的边框来消除这些,但我宁愿不必这样做。我只是想避免流血。我该怎么做?

BTW,这两个小部件(父节点和子节点)都是由第三个小部件创建的,它是一个QDialog。这个QDialog创建了父项,然后是子项,并将父项传递给它的构造函数中的子项。

1 个答案:

答案 0 :(得分:0)

您是否尝试过更具体的选择器?喜欢按对象名称选择吗? QLabel继承QFrame。因此,当您告诉您的父级QFrame以某种方式行事时,您也会告诉所有继承QObject的{​​{1}},例如QFrame也具有相同的风格。

在文档中,它提前使用QLabelsetObjectName提及。

  

如果我们希望该属性仅适用于一个特定的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中的行为具有惊人的相似性。订购,其他选择器等可以让您非常具体地了解您想要应用样式的项目。

希望有所帮助。