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

时间:2018-02-12 13:35:26

标签: c++ qt qtstylesheets

是否可以在不再调用setStyleSheet的情况下更改样式表中的一个特定属性?我通过使用属性选择器(类似于CSS)和定义"类型"的自定义属性解决了一些简单的情况。或"州"小部件。

假设我需要在运行时更改边框宽度。为此我应该更改属性" border",并且我已经定义了类型为int的自定义属性borderWidth。 CSS支持伪函数attr(),它可用于计算另一个属性的值。显然它不适用于Qt样式表,例如

QTablo [state="3"] {
     border: attr(qproperty-borderWidth);
}
unpolish(); polish(); update();例行公事我看不出没有变化。除了设置样式之外,还有其他解决方法吗?

1 个答案:

答案 0 :(得分:1)

请注意,Qt仅支持CSS2的子集,attr()似乎首先在CSS2.1中提及。

你可以:

  • 使用QFrame并更改其属性,而不是使用样式表。
  • 在运行时生成样式表并分配它。像QString("border-width: %1px;").arg(borderWidth);
  • 之类的东西
  • 使用在QProxyStyle中返回正确值的自定义pixelMetric()