c++ 什么原因导致样式表出血到子部件

gjmwrych  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(114)

我有一个子部件(QFrame),它有自己的样式表设置。在这个QFrame上有4个标签,我不希望边界周围。这个QFrame的父部件是一个QWidget,边界属性是出血到我的QFrame标签。
我可以通过直接设置每个标签的边框来消除这些问题,但我不想这样做。我只是想避免出血。我该如何做到这一点?
顺便说一句,这两个小部件(父部件和子部件)都是由第三个小部件QDialog创建的。这个QDialog创建了父部件,然后创建了子部件,并在其构造函数中将父部件传递给子部件。

nhn9ugyo

nhn9ugyo1#

你有没有尝试过更具体的选择器?比如通过对象名称选择?QLabel继承了QFrame。所以当你告诉你的父QFrame以某种方式行为时,你也告诉了所有继承QFrameQObject,比如QLabel也有相同的风格。
在文档中,它早期提到使用setObjectName#objectName
如果我们希望属性只应用于一个特定的QLineEdit,我们可以给予一个名称,使用QObject::setObjectName(),并使用一个ID来引用它:

myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");

字符串
Qt Documentation: Qt Style Sheets Examples
稍后它有更多选择器的例子:
复合材料示例
就像你在回答中提到的,另一种选择是为你的QLabel编写一个不同的风格。
Qt StyleSheets中的选择器与CSS中的选择器有着惊人的相似之处。排序、附加选择器等可以让你非常具体地了解你想要应用的样式。

相关问题