实现Label的鼠标点击响应,以及获取焦点后改变颜色

来源:互联网 发布:淘宝查看商品类目 编辑:程序博客网 时间:2024/05/18 02:10

QT里面的Label控件本身没有响应鼠标点击事件,而要实现Label对鼠标点击的响应,以及鼠标进入和离开时,颜色发生变化,创建了一个新的类ClickLabel,继承了QLabel类,覆写了鼠标进入离开事件、点击事件,实现了上述功能,源码如下:

File:ClickLabel.h

#ifndef CLICKLABEL_H#define CLICKLABEL_H#include <QLabel>class ClickLabel:public QLabel{    Q_OBJECTpublic:    explicit  ClickLabel(QWidget *parent = 0);    ClickLabel(const QString &text, QWidget *parent=0);signals:    void clicked();//鼠标单击信号protected:    // 鼠标单击事件    void mouseReleaseEvent(QMouseEvent *);    void enterEvent(QEvent *);    void leaveEvent(QEvent *);};#endif // CLICKLABEL_H

File:ClickLabel.cpp

#include "ClickLabel.h"#include <QMouseEvent>ClickLabel::ClickLabel(QWidget *parent):    QLabel(parent){    QPalette pa;    pa.setColor(QPalette::WindowText, Qt::blue);    setPalette(pa);}ClickLabel::ClickLabel(const QString &text, QWidget *parent):    QLabel(parent){    QPalette pa;    pa.setColor(QPalette::WindowText, Qt::blue);    setPalette(pa);    setText(text);}void ClickLabel::mouseReleaseEvent(QMouseEvent *ev){    if (ev->button() == Qt::LeftButton)          emit clicked();//(this);}void ClickLabel::enterEvent(QEvent *){    QPalette pa;    pa.setColor(QPalette::WindowText, Qt::red);    setPalette(pa);}void ClickLabel::leaveEvent(QEvent *){    QPalette pa;    pa.setColor(QPalette::WindowText, Qt::blue);    setPalette(pa);}
把Label当成按钮使用,还可以改变颜色,用起来感觉挺美观的,感兴趣的试一下吧。

0 0
原创粉丝点击