通过 qproperties 更改小部件的样式属性
Changing widget's style attribute via qproperties
是否可以在不再次调用 setStyleSheet 的情况下更改样式 sheet 中的一个特定属性?我通过使用属性选择器(类似于 CSS)和定义小部件的 "type" 或 "state" 的自定义属性解决了一些简单的案例。
假设我需要更改 运行-time.For 中的边框宽度,我应该更改属性 "border",并且我定义了自定义 属性 borderWidth 类型诠释。 CSS 确实支持伪函数 attr() ,它可以用来从一个属性计算另一个属性的值。显然它不适用于 Qt 样式 sheet,例如
QTablo [state="3"] {
border: attr(qproperty-borderWidth);
}
在取消抛光()之后;抛光();更新();例程我看没有任何变化。除了设置样式之外,还有其他解决方法吗?
注意Qt只支持CSS2的一个子集,attr()好像是在CSS2.1.
中最先提到的
你可以:
- 使用
QFrame
并更改其属性,而不是使用样式 sheet。
- 在 运行 时生成样式 sheet 并分配它。类似于
QString("border-width: %1px;").arg(borderWidth);
.
- 使用自定义
QProxyStyle
returns pixelMetric()
中的正确值。
是否可以在不再次调用 setStyleSheet 的情况下更改样式 sheet 中的一个特定属性?我通过使用属性选择器(类似于 CSS)和定义小部件的 "type" 或 "state" 的自定义属性解决了一些简单的案例。
假设我需要更改 运行-time.For 中的边框宽度,我应该更改属性 "border",并且我定义了自定义 属性 borderWidth 类型诠释。 CSS 确实支持伪函数 attr() ,它可以用来从一个属性计算另一个属性的值。显然它不适用于 Qt 样式 sheet,例如
QTablo [state="3"] {
border: attr(qproperty-borderWidth);
}
在取消抛光()之后;抛光();更新();例程我看没有任何变化。除了设置样式之外,还有其他解决方法吗?
注意Qt只支持CSS2的一个子集,attr()好像是在CSS2.1.
中最先提到的你可以:
- 使用
QFrame
并更改其属性,而不是使用样式 sheet。 - 在 运行 时生成样式 sheet 并分配它。类似于
QString("border-width: %1px;").arg(borderWidth);
. - 使用自定义
QProxyStyle
returnspixelMetric()
中的正确值。