Qt 中自定义QLabel上的点击事件

有时候我们需要在QLabel上显示一张图片,然后通过点击这张图片来处理下一步的 事情。但是Qt中QLabel默认是没有点击效果的,只能通过QPushButton 或者QToolButton来处理点击的事件,这样就具有局限性了。
我们可以通过继承QLabel来自定义QLabel来实现这种点击效果

/*myclickLabel.h*/
#ifndef MYCLICKLABEL_H
#define MYCLICKLABEL_H
#include <QWidget>
#include <QLabel>
#include <QObject>
#include <QEvent>
#include <QMouseEvent>
class MyClickLabel : public QLabel
{
     Q_OBJECT    // must include this if you use Qt signals/slots
public:
    explicit MyClickLabel(QWidget *parent = 0);

signals:
   void myClicked();                    // 单击产生的信号
   void myDoubleClicked();              // 双击产生的信号

private:
   void mousePressEvent(QMouseEvent* event);                 // 鼠标单击事件
   void mouseDoubleClickEvent(QMouseEvent *event);           // 鼠标双击事件
};

#endif // MYCLICKLABEL_H
/*myclickLabel.cpp*/
#include "myclicklabel.h"



MyClickLabel::MyClickLabel(QWidget *parent):QLabel(parent)
{

}


void MyClickLabel::mousePressEvent(QMouseEvent *event)
{
    emit myClicked();  // 当鼠标单击的时候,发出点击信号
}

void MyClickLabel::mouseDoubleClickEvent(QMouseEvent *event)
{
    emit myDoubleClicked();  // 当鼠标双击的时候,发出双击的信号
}

这样,自定义QLabel就完成 了,通过继承这个MyClickLabel类,同时需要将这个类的信号与你的槽绑定起来。就能实现点击的效果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值