QT实战(11):事件

本文详细探讨了QT框架中的事件处理机制,涵盖了键盘、鼠标、定时器及按钮等各类事件。通过实例讲解如何捕获和响应这些事件,同时阐述了如何忽略不需处理的事件,对于QT开发者具有实践指导意义。
摘要由CSDN通过智能技术生成

包括各种event( key mouse   timer  pushbutton ),event的处理和忽略。

//mybutton.h
#ifndef MYBUTTON_H
#define MYBUTTON_H
#include <QPushButton>


class MyButton : public QPushButton
{
    Q_OBJECT
public:
    explicit MyButton(QWidget *parent = nullptr);

protected:
    void mousePressEvent(QMouseEvent *e);

signals:

public slots:
};

#endif // MYBUTTON_H
//mybutton.cpp
#include "mybutton.h"
#include <QMouseEvent>
#include <QDebug>

MyButton::MyButton(QWidget *parent) : QPushButton(parent)
{

}


void MyButton::mousePressEvent(QMouseEvent *e)
{
    if(e->button() == Qt::LeftButton){
        qDebug()<< "按下了左键";
        //事件接收后就不会向后传递


      e->ignore(); //如果加这句表示接收处理后再忽略,也就是继续向后传递
                     //但是传给的是父组件(父对象),不是父类
    }else{
        //此处不做处理,继续向后传递信号
        QPushButton::mousePressEvent(e);
    }
}
//mylabel.h

#ifndef MYLABEL_H
#define MYLABEL_H

#include <QLabel>

class MyLabel : public QLabel
{
    Q_OBJECT
public:
    explicit MyLabel(QWidget *parent = nullptr);

protected: //基类的虚函数是保护类型,所以这里也是保护类型
    //mouse event
    void mousePressEvent(QMouseEvent *event); // 虚函数已经在基类声明,所以会自动提示
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    //进入窗口区域
    void enterEvent(QEvent *event);
    //离开窗口区域
    void leaveEvent(QEvent *event);

signals:

public slots:
};

#endif // MYLABEL_H
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值