首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不重置整个样式表的情况下,在Qt中为QWidget设置或更改特定的样式表属性?

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

Stack Overflow用户
提问于 2015-06-30 19:38:16
回答 1查看 1.3K关注 0票数 5

我寻找这个问题的答案已经有一段时间了,我很惊讶我还没有找到解决办法。我正在Mac上使用Qt,并希望自定义QPushbuttons和其他QWidgets,但我也希望在一定程度上保持本地外观。例如,如果我想使用样式表删除QButton的边距,则需要:

代码语言:javascript
运行
复制
QPushButton btn(this);
...
btn.setStyleSheet("margin:0;");

这确实删除了页边距,但也删除了为默认按钮设置的本机样式。当然,我只是想用样式表修改页边距,怎么做呢?

另外,我希望btn.styleSheet()会返回本机样式表,但默认情况下它是空的。只有当我设置自己的样式表时,它才会返回一个有效值,但只返回我设置的属性的有效值。我知道setStyleSheet会重置样式表,但是如何修改某些属性并保留其他所有内容呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-30 19:57:05

TL博士:不可能这样做。

本机样式通常不能表示为CSS样式表,因此在所有样式中,默认情况下styleSheet()是空的。因此,不幸的是,不可能一个一个地更改本地样式元素,因为它们通常是由平台API绘制的,这些API几乎不允许定制。

例如,QPushButton是由OS和Windows上的本机调用绘制的。

但是,在保证金的特定情况下,您可以很容易地创建一个代理样式,该代理样式返回较小的控制矩形和裁剪,并在将其传递给基样式之前将其转换。这也适用于颜色/颜色替换等。基本上你必须接受基本样式必须进行绘图,然后由你来调整它。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31147009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档