2

我有的 :-

我有一个扩展 QFrame 的自定义小部件(而不是 QWidget,因为 QFrame 已经有一个工作的paintEvent 实现)。我已经覆盖了 mousePressed() 和 mouseReleased() 以发出按下的() 释放() 和 clicked() 信号。到目前为止,一切都按预期运行良好。

我需要的 :-

这个自定义小部件具有基本的样式表支持,并且很好地支持 :hover 状态。但是 :pressed 状态不起作用。我已经发现这是因为 QFrame/QLabel 等不支持它。我想知道我需要做什么才能支持 :pressed 状态。我应该在按下和释放或其他任何东西上设置一些属性/属性吗?

4

2 回答 2

2

您可以为您的QLabel(或您正在使用的任何小部件)设置一个属性并更改该属性的值。然后在样式表中使用该属性。

例子:

this->setStyleSheet("*[myproperty=\"true\"] { background-color: red }");
d_label = new QLabel("dynamic label", this);
d_label->setProperty("myproperty", false);

然后在您的 mousePressEvent 中设置并在 mouseReleaseEvent 中取消设置该属性:

d_label->setProperty("myproperty", true); // or false when you wish to unset it
style()->unpolish(d_label);
style()->polish(d_label); // force a stylesheet recomputation
于 2013-08-07T13:20:55.050 回答
0

您可以使用您想要的样式在 mousePressEvent 和 mouseReleaseEvent 中执行“setStyleSheet()”吗?

于 2013-08-07T12:48:15.280 回答