gpt4 book ai didi

qt - 如何在 Qt 中为 QWidget 设置或更改特定样式表属性,而不重置整个样式表?

转载 作者:行者123 更新时间:2023-12-03 03:36:01 33 4
gpt4 key购买 nike

我一直在寻找这个问题的答案,但令我惊讶的是我还没有找到解决方案。我正在 Mac 上使用 Qt,并且想要自定义 QPushbuttons 和其他 QWidget,但我也想在某种程度上保持 native 外观。例如,如果我想使用样式表删除 QButton 的边距,我会这样做:

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

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

此外,我希望 btn.styleSheet() 会返回 native 样式表,但默认情况下它是空白的。仅当我设置自己的样式表时,它才会返回有效值,但仅限于我设置的属性。我知道 setStyleSheet 会重置样式表,但如何修改某些属性并保留其他所有内容不变?

最佳答案

TL;DR:不能那样做。

原生样式一般不能表示为 CSS 样式表,因此所有样式的 styleSheet() 默认为空。因此,遗憾的是,不可能一一更改 native 样式元素,因为它们通常是由平台 API 绘制的,而这些 API 几乎不允许进行自定义。

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

不过,在边距的特定情况下,您可以通过创建一个代理样式来轻松解决此问题,该代理样式返回较小的控制矩形并裁剪并在将绘制器传递给基本样式之前对其进行转换。这也适用于着色/颜色替换等。您基本上必须接受基本样式必须进行绘图,然后由您来调整它。

关于qt - 如何在 Qt 中为 QWidget 设置或更改特定样式表属性,而不重置整个样式表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147009/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com