QTabBar元素的样式::选项卡会导致样式丢失

QTabBar元素的样式::选项卡会导致样式丢失,qt,tabs,styling,Qt,Tabs,Styling,在我的应用程序中,我想设置QTabBar元素的所选选项卡的样式。我设置的样式只是它的背景色,但每次我更改它的背景色属性时,所有其他样式都会立即丢失。 起初,我认为这只是背景色的问题,但后来我尝试了更多,发现即使更改选项卡的边距,所有其他样式都丢失了。其他选项卡的背景色设置为透明、填充和边框丢失 我认为QT行为的正确方式应该是保持我没有明确修改的属性不变,但是对于这样一个明显的行为没有实现,必须有其他原因,或者我遗漏了一些东西 这是一个实际的“bug”,还是在试图设计标签时,我没有考虑到什么? 我

在我的应用程序中,我想设置QTabBar元素的所选选项卡的样式。我设置的样式只是它的背景色,但每次我更改它的背景色属性时,所有其他样式都会立即丢失。 起初,我认为这只是背景色的问题,但后来我尝试了更多,发现即使更改选项卡的边距,所有其他样式都丢失了。其他选项卡的背景色设置为透明、填充和边框丢失

我认为QT行为的正确方式应该是保持我没有明确修改的属性不变,但是对于这样一个明显的行为没有实现,必须有其他原因,或者我遗漏了一些东西


这是一个实际的“bug”,还是在试图设计标签时,我没有考虑到什么? 我认为您遇到的问题是,一旦更改GUI元素的样式,Qt就无法再使用操作系统的本机控件绘制它


当您改变任何类型的本机小部件(选项卡、组合框等)的样式时,您应该准备手动控制该小部件的各个方面的样式,因为您说您不希望它看起来像本机小部件,Qt必须使用不同的底层绘制系统来渲染小部件。

@Mario除了Chris已经说过的CSS样式凌驾于本机操作系统样式之外: CSS样式的任何应用程序都可以有效地调用

QWidget::setStyleSheet(const QString & styleSheet)

在目标QWidget上。这将使用包含新样式表的QString覆盖先前设置的样式表css;然后小部件重置自身并解析新的工作表。Qt不够智能,无法检测新样式表将影响(以及不会影响)小部件样式的哪些部分,此外,CSS不支持是否应用特定属性的开关。Qt需要添加删除和添加CSS属性的功能,以便在一个小部件上分层多个样式表才能工作(并且您可能还需要一个“RemoveAllStyleing()”函数)。

我认为Qt总是以相同的方式绘制,但使用从系统中提取的“CSS属性”。嗯,我想应该是这样的。在幕后,他们使用本机API调用使小部件看起来尽可能的本机。使用从系统中获取的“CSS属性”——如果系统不提供任何属性——或者它会像它喜欢的那样绘制,或者完全由你自己绘制?@j_kubik,我假设QT框架应该能够以某种方式将系统小部件样式转换为适当的CSS属性,并将它们包含到级联中。但很明显,现在这种情况似乎没有发生。