QT:自定义QLabel实现点击事件

实现QLabel点击事件,及自定义对话框@TOC

实现QLabel点击事件

我们经常会遇到,点击QLabel弹出一个Dialog进行数据的更新,但是QT本身的QLabel没有clicked事件,这时需要我们继承QLabel然后加入自定义点击事件。

自定义类继承QLabel

我们可以通过重写QLabel中的mousePressEvent()或mouseReleaseEvent()事件来达到QLabel的点击事件。

CustomLabel.h 代码如下

#ifndef CUSTOMLABEL_H
#define CUSTOMLABEL_H
#include <QWidget>
#include <QLabel>
#include <QMouseEvent>
class CustomLabel : public QLabel
{
    Q_OBJECT
public:
    explicit CustomLabel(QWidget *parent = nullptr);

signals:
    void clicked();

protected:
    virtual void mousePressEvent(QMouseEvent* event);//重写mousePressEvent事件
};
#endif // CUSTOMLABEL_H

首先在里面定义一个信号clicked();
然后声明要重写的mousePressEvent();

CustomLabel.cpp 代码如下

#include "customlabel.h"
CustomLabel::CustomLabel(QWidget *parent) : QLabel(parent)
{
}
void CustomLabel::mousePressEvent(QMouseEvent *ev)
{
     //如果单击了就触发clicked信号
     if (ev->button() == Qt::LeftButton) {
         //触发clicked信号
         emit clicked();
     }
    //将该事件传给父类处理
    QLabel::mousePressEvent(ev);
}

最后可以将QLabel提升为CustomLabel。
操作步骤如下:
1、首先选中要修改的QLabel的组件。
2、右键然后选择提升为。
3、然后在提升类名称中写入CustomerLabel,点击添加,一定注意大小写。
4、点击提升即可。
提升截图
具体使用
可以通过connect链接到自定义的clicked信号

connect(ui->temperature1_limit,&CustomLabel::clicked,this,[=](){
        qDebug()<<"temperature1_limit is run";
});
  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StruggleRookie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值