通过 qproperties 更改小部件的样式属性
Changing widget's style attribute via qproperties
是否可能在样式表中更改一个特定属性而不再次调用setStyleSheet?我通过使用属性选择器(类似于CSS(和定义Widget的"类型"或"状态"的自定义属性来解决的一些简单案例。
假设我需要在运行时更改边界宽度。对于我应该更改属性"边界",并且我定义了INT类型的自定义属性borderwidth。CSS确实支持伪函数attr((,可以用来从另一个属性计算一个属性的值。显然它与QT样式表不起作用,例如
QTablo [state="3"] {
border: attr(qproperty-borderWidth);
}
untolish((; polish((; update((;例行程序我没有任何更改。除了设置样式外,还有其他方法吗?
请注意,QT仅支持CSS2的子集,Attr((似乎首先在CSS2.1中提到。
您可以:
- 使用
QFrame
并更改其属性,而不是使用样式表。 - 在运行时生成样式表并分配。类似
QString("border-width: %1px;").arg(borderWidth);
。 - 使用返回
pixelMetric()
中正确值的自定义QProxyStyle
。