我有什么: -
我有一个自定义小部件,它扩展了QFrame(而不是QWidget,因为QFrame已经有了一个有效的paintEvent实现)。我已经重写了mousePressed()和mouseReleased()来发出pressed()release()和clicked()信号。到目前为止,一切都如期待的那么好。
我需要什么: -
这个自定义小部件具有基本的样式表支持,它支持:悬停状态就好了。 但是:压迫状态不起作用。我已经发现这是bcoz它不支持QFrame / QLabel等。 我想知道我需要做些什么来支持:压迫状态。 我应该在按下和释放或其他任何东西上设置一些属性/属性吗?
答案 0 :(得分: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
答案 1 :(得分:0)
您可以使用您想要的样式在mousePressEvent和mouseReleaseEvent中执行“setStyleSheet()”吗?