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

标签 c++ qt qt4 qtstylesheets

我拥有什么:-

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

相关文章:

用于网络排名和搜索引擎的 C++ 库

c++ - GDI+ 多线程绘图

qt - Qt Creator 4 中的基类

c++ - QT 位置类

qt - QGraphicsView 双击事件和 ScrollHandDrag 模式项问题

qt - QDockWidget 关闭按钮和 float 按钮的工具提示?

c++ - 使用非 unicode 名称创建 QFile

c++ - 将指针强制转换为整数、递增该整数,然后强制转换回来是否安全?

linux - 我需要的所有依赖项

c++ - 使用 tbb 并行多个嵌套循环