我拥有什么:-
我有一个扩展 QFrame 的自定义小部件(而不是 QWidget,因为 QFrame 已经有一个可用的 PaintEvent 实现)。我已经重写了 mousePressed() 和 mouseReleased() 以发出 pressed()、released() 和 clicked() 信号。到目前为止,一切都按预期运行良好。
我需要什么:-
这个自定义小部件具有基本的样式表支持,并且它支持 :hover 状态。 但 :pressed 状态不起作用。我已经发现这是因为 QFrame/QLabel 等不支持它。 我想知道我需要做什么才能支持 :pressed 状态。 我应该在按下和释放时设置一些属性/属性还是其他什么?
最佳答案
您可以为您的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
关于c++ - [Qt]如何支持:pressed state of style sheet for custom widget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18103670/