#ifndef MYBUTTON_H#define MYBUTTON_H#includeclass MyButton : public QPushButton{ Q_OBJECTpublic: explicit MyButton(QWidget *parent = nullptr);protected: void mousePressEvent(QMouseEvent *e);signals:public slots:};#endif // MYBUTTON_H
#include "mybutton.h"#include#include MyButton::MyButton(QWidget *parent) : QPushButton(parent){}void MyButton::mousePressEvent(QMouseEvent *e){ if(e->button() == Qt::LeftButton) { qDebug()<<"left mousebutton"; e->ignore(); } else { QPushButton::mousePressEvent(e); }}
#ifndef MYLABEL_H#define MYLABEL_H#includeclass mylabel : public QLabel{ Q_OBJECTpublic: explicit mylabel(QWidget *parent = nullptr);protected: void mousePressEvent(QMouseEvent *ev); void mouseReleaseEvent(QMouseEvent *ev); void mouseMoveEvent(QMouseEvent *ev); void enterEvent(QEvent *); void leaveEvent(QEvent *);signals:public slots:};#endif // MYLABEL_H
#include "mylabel.h"#include#include mylabel::mylabel(QWidget *parent) : QLabel(parent){ this->setMouseTracking(true);}void mylabel::mousePressEvent(QMouseEvent *ev){ int i = ev -> x(); int j = ev -> y();// QString str = QString("abc %1 ^_^ %2").arg(123).arg("hello"); if (ev->button() == Qt::LeftButton) { }else if(ev->button() == Qt::RightButton) { }else if(ev->button() == Qt::MiddleButton) { } QString text = QString(" ") .arg(i).arg(j); this->setText(text);}void mylabel::mouseReleaseEvent(QMouseEvent *ev){ QString text = QString(" Mouse Press: (%1, %2)
") .arg(ev -> x()).arg(ev -> y()); this->setText(text);}void mylabel::mouseMoveEvent(QMouseEvent *ev){ QString text = QString(" Mouse Release: (%1, %2)
") .arg(ev -> x()).arg(ev -> y()); //this->setText(text);}void mylabel::enterEvent(QEvent *e){ QString text = QString(" Mouse Move: (%1, %2)
"); this->setText(text);}void mylabel::leaveEvent(QEvent *e){ QString text = QString(" Mouse enter
"); this->setText(text);} Mouse leave
#ifndef MYWIDGET_H#define MYWIDGET_H#includenamespace Ui {class MyWidget;}class MyWidget : public QWidget{ Q_OBJECTpublic: explicit MyWidget(QWidget *parent = 0); ~MyWidget();protected: void keyPressEvent(QKeyEvent *event); void timerEvent(QTimerEvent *event); void closeEvent(QCloseEvent *event); bool eventFilter(QObject *watched, QEvent *event);private: Ui::MyWidget *ui; int timerId; int timerId2;};#endif // MYWIDGET_H
#include "mywidget.h"#include "ui_mywidget.h"#include#include #include MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget){ ui->setupUi(this); timerId = this->startTimer(1000); timerId2 = this->startTimer(500); connect(ui->pushButton,&MyButton::clicked, [=]() { qDebug()<<"press now"; }); ui->label_2->installEventFilter(this);}void MyWidget::keyPressEvent(QKeyEvent *event){ qDebug()<<(char)(event->key()); if (event->key() == Qt::Key_A) { qDebug()<<"Qt::Key_A"; }}void MyWidget::timerEvent(QTimerEvent *event){ if(event->timerId() == this->timerId) { static int sec = 0; ui->label->setText(QString(" ") .arg(sec++)); if(5==sec) { this->killTimer(timerId); } } else if(event->timerId() == this->timerId2) { static int sec = 0; ui->label_2->setText(QString(" Timer: (%1)
") .arg(sec++)); }}void MyWidget::closeEvent(QCloseEvent *event){ int ret = QMessageBox::question(this,"question","close it?"); if (ret == QMessageBox::Yes) { event->accept(); } else { event->ignore(); }}bool MyWidget::eventFilter(QObject *watched, QEvent *event){ if(watched == ui->label_2) { QMouseEvent *env = static_cast Timer: (%1)
(event); if(event->type() == QEvent::MouseMove) { ui->label_2->setText(QString("Mouse move:(%1, %2)").arg(env->x()).arg(env->y())); return true; } } else { return QWidget::eventFilter(watched,event); }}MyWidget::~MyWidget(){ delete ui;}
#include "mywidget.h"#includeint main(int argc, char *argv[]){ QApplication a(argc, argv); MyWidget w; w.show(); return a.exec();}