如果要实现QT上面一些控件的鼠标事件,是没办法直接实现的,如果想要捕捉鼠标的点击,那么只需要继承QLable类重写mousePressEvent这个函数即可。
第一步:新建好自己的MyQLabel类
第二步:进入到UI设计界面,找到需要实现鼠标事件的lable控件,之后右击鼠标选择Promote to ...
填写自己的类名和头文件路径,之后点击Add
之后点击Promote
之后编译即可成功:
myqlabel.h
#ifndef MYQLABEL_H
#define MYQLABEL_H
#include <QLabel>
#include <QDialog>
#include "QWidget"
#include "QStringListModel"
#include "QMessageBox"
#include "QMenu"
#include "QMouseEvent"
#include "QDebug"
class MyQLabel : public QLabel
{
Q_OBJECT
public:
explicit MyQLabel(QWidget *parent = nullptr);
~MyQLabel();
signals:
void clicked();
protected:
virtual void mousePressEvent(QMouseEvent* event);
};
#endif // MYQLABEL_H
myqlabel.cpp
#include "myqlabel.h"
MyQLabel::MyQLabel(QWidget *parent) : QLabel(parent)
{
qDebug()<<"初始化成功!";
}
MyQLabel::~MyQLabel()
{
}
void MyQLabel::mousePressEvent(QMouseEvent *ev)
{
if(ev->button()==Qt::LeftButton)
{
qDebug()<<"点击了标签"<<ev->x()<<";"<<ev->x();
}
QLabel::mousePressEvent(ev);
}