如何在不重置整个样式表的情况下,在Qt中为QWidget设置或更改特定的样式表属性?

5

我已经搜索了一段时间,寻找解决这个问题的答案,但是我很惊讶地发现我没有找到一个解决方案。我正在使用Qt on Mac,希望自定义QPushbuttons和其他QWidgets,但我也想保留本机外观。例如,如果我想使用样式表删除QButton的边距,则可以执行以下操作:

QPushButton btn(this);
...
btn.setStyleSheet("margin:0;");

这确实去除了边距,但也删除了默认按钮已设置的本地样式。当然,我只想使用样式表修改边距,我该如何做?
此外,我希望btn.styleSheet()返回本地样式表,但默认情况下为空白。只有当我设置自己的样式表时,它才返回有效值,但仅适用于我设置的属性。我知道setStyleSheet会重置样式表,但我该如何修改某些属性并保留其他所有内容?
1个回答

7
TL;DR: 无法以CSS样式表的方式更改本地样式元素,因为它们通常由平台API绘制,并允许很少或没有自定义。但可以通过创建代理样式来解决某些问题,例如在特定情况下调整边距和颜色。基本样式负责绘制,您需要进行微调。请注意,styleSheet()默认为空。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接