我在网上找到了关于如何实现QSS可访问自定义QWidgets的自定义属性的示例:https://qt-project.org/wiki/Qt_Style_Sheets_and_Custom_Painting_Example
有谁知道如何实现小部件,以便我可以为悬停或按下状态设置不同的颜色?
当前样式表如下所示:
SWidget
{
qproperty-lineColor: yellow;
qproperty-rectColor: red;
}
我希望能够拥有这样的东西:
SWidget:hover
{
qproperty-lineColor: blue;
qproperty-rectColor: green;
}
SWidget:pressed
{
qproperty-lineColor: orange;
qproperty-rectColor: violet;
}
注意:我知道可以使用特定于鼠标事件的qproperties来实现鼠标事件和更改颜色,例如:
SWidget
{
qproperty-lineColor: yellow;
qproperty-rectColor: red;
qproperty-lineColor-hover: orange;
qproperty-rectColor-hover: violet;
}
但我希望能够使用原始的qss / css方式使其工作。
问候!
答案 0 :(得分:0)
当用户悬停或按下小部件时,您应该更改一些小部件属性。并为该属性制作不同的QSS选择器。 在更改属性之后,您应该对应用程序样式进行取消选择。
qApp->style()->unpolish( this );
qApp->style()->polish( this );
其中“this”当前窗口指针。这个“神奇”代码将有助于影响适当的QSS选择器。