为QLabel增加Clicked信号

来源:互联网 发布:雅各比矩阵 编辑:程序博客网 时间:2024/04/28 19:31
首先从QLabel派生一个类,在其中重载mouseReleaseEvent 虚函数。并定义clicked信号。


mouseReleaseEvent 函数中发送clicked信号。
代码如下:
#ifndef CUSTOMERQLABEL_H
#define CUSTOMERQLABEL_H
#include <QLabel>
class customerqlabel : public QLabel
{
    Q_OBJECT
public:
    explicit customerqlabel(QWidget *parent=0, Qt::WindowFlags f=0);
    explicit customerqlabel(const QString &text, QWidget *parent=0, Qt::WindowFlags f=0);
protected:
    /*!
      由Qt自己调用的鼠标事件处理函数,在此发射clicked信号
    */
    virtual void mouseReleaseEvent(QMouseEvent * ev);
signals:
    void clicked(void);
};
#endif // CUSTOMERQLABEL_H
#include "customerqlabel.h"
customerqlabel::customerqlabel(QWidget *parent, Qt::WindowFlags f):
    QLabel(parent,f)
{
}
customerqlabel::customerqlabel(const QString &text, QWidget *parent, Qt::WindowFlags f):
    QLabel(text,parent,f)
{
}
void customerqlabel::mouseReleaseEvent(QMouseEvent * ev)
{
    Q_UNUSED(ev)
    emit clicked();
}

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

然后选中提升后的label,在右键菜单中选择改变信号/槽,在信号中增加 clicked()

Image1.png


然后在转到槽中选择clicked信号即可。



2 0