我有一个子部件(QFrame),它有自己的样式表设置。在这个QFrame上有4个标签,我不希望边界周围。这个QFrame的父部件是一个QWidget,边界属性是出血到我的QFrame标签。我可以通过直接设置每个标签的边框来消除这些问题,但我不想这样做。我只是想避免出血。我该如何做到这一点?顺便说一句,这两个小部件(父部件和子部件)都是由第三个小部件QDialog创建的。这个QDialog创建了父部件,然后创建了子部件,并在其构造函数中将父部件传递给子部件。
nhn9ugyo1#
你有没有尝试过更具体的选择器?比如通过对象名称选择?QLabel继承了QFrame。所以当你告诉你的父QFrame以某种方式行为时,你也告诉了所有继承QFrame的QObject,比如QLabel也有相同的风格。在文档中,它早期提到使用setObjectName和#objectName。如果我们希望属性只应用于一个特定的QLineEdit,我们可以给予一个名称,使用QObject::setObjectName(),并使用一个ID来引用它:
QLabel
QFrame
QObject
setObjectName
#objectName
QObject::setObjectName()
myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");
字符串Qt Documentation: Qt Style Sheets Examples稍后它有更多选择器的例子:复合材料示例就像你在回答中提到的,另一种选择是为你的QLabel编写一个不同的风格。Qt StyleSheets中的选择器与CSS中的选择器有着惊人的相似之处。排序、附加选择器等可以让你非常具体地了解你想要应用的样式。
1条答案
按热度按时间nhn9ugyo1#
你有没有尝试过更具体的选择器?比如通过对象名称选择?
QLabel
继承了QFrame
。所以当你告诉你的父QFrame
以某种方式行为时,你也告诉了所有继承QFrame
的QObject
,比如QLabel
也有相同的风格。在文档中,它早期提到使用
setObjectName
和#objectName
。如果我们希望属性只应用于一个特定的QLineEdit,我们可以给予一个名称,使用
QObject::setObjectName()
,并使用一个ID来引用它:字符串
Qt Documentation: Qt Style Sheets Examples
稍后它有更多选择器的例子:
复合材料示例
就像你在回答中提到的,另一种选择是为你的
QLabel
编写一个不同的风格。Qt StyleSheets中的选择器与CSS中的选择器有着惊人的相似之处。排序、附加选择器等可以让你非常具体地了解你想要应用的样式。