Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是什么导致样式表出血到子窗口小部件中_C++_Qt_Qt Creator_Qtstylesheets - Fatal编程技术网

C++ 是什么导致样式表出血到子窗口小部件中

C++ 是什么导致样式表出血到子窗口小部件中,c++,qt,qt-creator,qtstylesheets,C++,Qt,Qt Creator,Qtstylesheets,我有一个子部件(QFrame),它有自己的样式表设置。在这个QFrame上有4个标签,我不希望有边框。此QFrame的父窗口小部件是一个QWidget,border属性正在流到我的QFrame标签上 我可以通过为每个标签直接设置边框来消除这些问题,但我不想这样做。我只是想避开布莱登镇。我该怎么做 顺便说一句,这两个小部件(父部件和子部件)都是由第三个小部件(QDialog)创建的。此QDialog先创建父对象,然后创建子对象,并在其构造函数中将父对象传递给子对象。您尝试过更具体的选择器吗?也喜欢

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

我可以通过为每个标签直接设置边框来消除这些问题,但我不想这样做。我只是想避开布莱登镇。我该怎么做


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

您尝试过更具体的选择器吗?也喜欢按对象名称选择吗
QLabel
继承
QFrame
。因此,当您告诉您的父级
QFrame
以某种方式进行操作时,您也在告诉继承
QFrame
的所有
QObject
,例如
QLabel
也具有相同的样式

在前面提到的文档中,使用了
setObjectName
#objectName

如果希望该属性仅应用于一个特定的QLineEdit,则 可以使用
QObject::setObjectName()
为其命名并使用ID 要引用它的选择器:

后面有更多选择器示例:

正如您在回答中已经提到的,另一种方法是为
QLabel
s编写不同的样式

Qt样式表中的选择器的行为与CSS中的选择器惊人地相似。订购、附加选择器等可以让您非常明确地知道要应用哪种样式


希望能有帮助。

我确实试过了。我在父对象上设置了一个对象名,然后执行了QWidget#objectName。这样做可以停止出血,但现在父级没有应用样式表。这让我难以置信。我可以用其他小部件做同样的事情来证明它是有效的。它只是不适用于这一个小部件。其中一定有我看不到的东西。好吧,我一直在搞乱样式表的特殊性,并改变了我的问题。这是我的代码:const QString STYLE_SHEET=“background color:rgba(x,x,x,y);”很抱歉最后的评论。在评论中改变了想法。我将问题缩小到单个样式表设置,因此我在这里提出了一个新问题:
myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");