QLabel默认无法响应鼠标事件,网上有很多曲线救国的方法,如使用eventFilter事件过滤器、子类化QLabel并重写事件处理函数等。但是这些方法实现起来都有些大材小用,本文介绍一种非常简单的方法:

靠超链接实现

给QLabel的text设置为富文本,给某些文字或全部文字添加超链接。
通过connect处理QLabel::linkActivated信号即可。


如图所示,不需要设置真正的超连接,有一个href占位即可。

connect(p_label, &QLabel::linkActivated, this, &AAA::slot_func);

不足

这个方法有两点不足之处:

  1. 比如链接文字带下划线;
  2. hover效果鼠标变成小手形状。

这两个问题可以通过设置QSS样式表解决。