Qt 的应用程序范围样式表未被本地默认样式表覆盖

Qt's application wide stylesheet not overwritten by local default stylesheet

我有一个加载 .qss 样式文件并将样式表应用于整个应用程序的应用程序。我的问题是它修改了默认 QGroupBox 样式而不是它的子类,我想在一个地方使用默认样式 QGroupBox
这是我试图用默认样式替换的样式应用程序范围的示例。

QGroupBox {
    border: 0px solid gray;
    border-bottom: 1px solid block;
}

我尝试使用

重置样式表
_ui->setupUi(this);
_ui->myGroupBox->setStylesheet("");

但这不起作用。从我收集到的信息来看,应用程序范围内的样式应该在 ui 阶段发生 setupUi() ,因此被空(默认)样式表覆盖。情况似乎并非如此。

我也尝试过直接从 Qt Designer 或使用 qss 文件设置它,但没有成功。

myGroupBox {
}

然而,如果我把border-bottom: 1px solid red;放在qss文件中,它就被正确注册并否决了默认样式。不过我现在没有默认参数,所以如果需要我不能手动设置它们。

如果我删除恼人的 qss 规则,它可以正常工作,但它会在其他 50 个地方破坏应用程序 ui,遗憾的是我现在没有时间重构它。

在重置为默认样式表时我是否遗漏了什么?

谢谢。

您似乎混淆了 styles 和 stylesheets。这些是不同的野兽。当一个小部件有一个样式表时,它不再由样式机制设置样式,因为样式通常不够灵活,不能被样式表修改,因为它们例如取决于平台提供的图像等。这两种机制相互排斥:任何一种都可以控制小部件的外观,但是一旦使用样式表,它就是全有或全无:样式机制不在画面中。

只需修复您的样式表,使其仅适用于它应该适用的组框 - 您可以 select 按名称或名称路径进行设置。