通过 qproperties 更改小部件的样式属性

Changing widget's style attribute via qproperties

本文关键字:样式 属性 小部 qproperties 通过      更新时间:2023-10-16

是否可能在样式表中更改一个特定属性而不再次调用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