通过 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() 中的正确值。