4

我在网上找到了这个关于如何实现从 QSS 访问自定义 QWidget 的自定义属性的示例: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 方式使其工作。

问候!

4

1 回答 1

0

当用户悬停或按下小部件时,您应该更改一些小部件属性。并为该属性制作不同的 QSS 选择器。更改属性后,您应该对应用程序样式进行 unpolish\polish。

qApp->style()->unpolish( this );
qApp->style()->polish( this );

其中“this”当前窗口指针。该“魔术”代码将有助于影响适当的 QSS 选择器。

于 2017-12-19T11:54:43.007 回答