为QLabel增加Clicked信号

QT为QLabel添加Click事件(如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件)

 

其实就是改写了一个函数:mouseReleaseEvent,当在QLabel放开鼠标的时,就发射点击信号:

ClickedLabel.h

#ifndef CLICKEDLABEL_H
#define CLICKEDLABEL_H

#include <QLabel>
#include <QWidget>
#include <Qt>

class ClickedLabel : public QLabel
{
    Q_OBJECT
public:
    explicit ClickedLabel(QWidget *parent = 0,Qt::WindowFlags f=Qt::WindowFlags());
    ~ClickedLabel();

signals:
    void clicked();

protected:
    void mouseReleaseEvent(QMouseEvent *ev);
};

#endif // CLICKEDLABEL_H

ClickedLabel.cpp

#include "clickedlabel.h"

ClickedLabel::ClickedLabel(QWidget *parent,Qt::WindowFlags f):QLabel(parent)
{

}

ClickedLabel::~ClickedLabel()
{

}

void ClickedLabel::mouseReleaseEvent(QMouseEvent *ev)
{

    emit clicked();
}

总的来说,如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件。因为我们可以通过事件来改变组件的默认操作。比如,如果我们要自定义一个能够响应鼠标事件的EventLabel,我们就需要重写QLabel的鼠标事件,做出我们希望的操作,有可能还得在恰当的时候发出一个类似按钮的clicked()信号(如果我们希望让这个EventLabel能够被其它组件使用)或者其它的信号。

然后在UI界面中右键菜单中选择“提升到”,在对话框中输入对应的派生类名称和头文件。之后单击“添加”按钮

 

 

然后选中提升后的label,在右键菜单中选择改变信号/槽,在信号中增加 clicked()
 
Image1.png
 
 
然后在转到槽中选择clicked信号即可。

 

posted @ 2019-12-10 17:03  sgggr  阅读(2599)  评论(0编辑  收藏  举报