QLabel默认无法响应鼠标事件,网上有很多曲线救国的方法,如使用eventFilter事件过滤器、子类化QLabel并重写事件处理函数等。但是这些方法实现起来都有些大材小用,本文介绍一种非常简单的方法:
靠超链接实现
给QLabel的text设置为富文本,给某些文字或全部文字添加超链接。
通过connect
处理QLabel::linkActivated
信号即可。
connect(p_label, &QLabel::linkActivated, this, &AAA::slot_func);
不足
这个方法有两点不足之处:
- 比如链接文字带下划线;
- hover效果鼠标变成小手形状。
这两个问题可以通过设置QSS样式表解决。