Qt的样式表真的处理_dynamic_属性吗?

mdc*_*dcl 17 qt stylesheet

Qt的动态属性是否真的如此动态的样式表?

我有样式表和动态属性的基本示例:

/*stylesheet:*/
*[field_mandatory="true"] { background-color: "yellow";}
Run Code Online (Sandbox Code Playgroud)

我在运行时在代码中的某处发生了这种情况:

/*code:*/
myWidget->setProperty("field_mandatory", field->isFilled() );
Run Code Online (Sandbox Code Playgroud)

在运行时更改此属性时,UI中没有任何更改.

有没有人有想法在更改属​​性时更新Qt的样式表引擎必须做些什么,或者它是否能够处理这些情况?

顺便说一句.我正在使用Qt 4.4

Jas*_*son 20

Qt在他们的FAQ中有以下建议:

style()->unpolish(theWidget);
style()->polish(theWidget);
Run Code Online (Sandbox Code Playgroud)

他们还说你可以通过执行以下操作来重置样式表,但它更昂贵:

setStyleSheet(styleSheet());
Run Code Online (Sandbox Code Playgroud)


mdc*_*dcl 6

我发现了一种快速,虽然有点hackish的方式来更新小部件的样式.

myWidget->style()->unpolish(myWidget);
myWidget->ensurePolished();
Run Code Online (Sandbox Code Playgroud)

更改属性后执行此操作可保持属性数据和UI之间的关联.