gpt4 book ai didi

c++ - [Qt]如何支持:pressed state of style sheet for custom widget?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:25 26 4
gpt4 key购买 nike

我有什么:-

我有一个扩展 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com