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

时间:2016-12-12 21:22:23

标签: css qt qtstylesheets

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

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

我尝试使用

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

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

我也尝试过直接从Qt Designer设置它,或者使用qss文件设置它。

myGroupBox {
}

但是,如果我将border-bottom: 1px solid red;放入qss文件中,则会正确注册并覆盖默认样式。我现在不是默认参数,所以如果需要,我不能手动设置它们。

如果我删除烦人的qss规则,它工作正常,但它在其他50个地方打破了应用程序ui,我很遗憾没有时间重构它。

在重置为默认样式表时,我是否遗漏了某些内容?

感谢。

1 个答案:

答案 0 :(得分:0)

您似乎将样式与样式表单混合在一起。这些是不同的野兽。当小部件具有样式表时,它不再由样式机制设置样式,因为通常样式不够灵活,不能被样式表修改,因为它们例如是样式表。依赖于平台提供的图像等。这两种机制是相互排斥的:任何一个都可以控制窗口小部件的外观,但是一旦你使用样式表,它就是全有或全无:样式机制不在图片之外。

只需修改样式表以仅应用于应该应用的组框 - 您可以按名称或名称路径选择它们。