zoukankan      html  css  js  c++  java
  • QT之事件机制

    MyPushButton.h:
    #ifndef MYPUSHBUTTON_H
    #define MYPUSHBUTTON_H
    #include<QPushButton>
    #include<QEvent>
    #include<QMouseEvent>
    class MyPushButton : public QPushButton
    {
    public:
        MyPushButton();
         MyPushButton(const QString& text,QWidget *parent=nullptr);
         bool event(QEvent *e);
         void mousePressEvent(QMouseEvent *e);
    };
    
    #endif // MYPUSHBUTTON_H
    MyPushButton.cpp:
    #include "MyPushButton.h"
    #include<QWidget>
    #include<QDebug>
    MyPushButton::MyPushButton(const QString& text,QWidget *parent)
        :QPushButton(text,parent)
    {
    }
    bool  MyPushButton::event(QEvent *e)
    {
        if(e->type()==QEvent::MouseButtonPress)
        {
            QMouseEvent *x=static_cast<QMouseEvent*>(e);
           mousePressEvent(x);
           //e->ignore();
           //e->accept();
            return false; //表示我不处理这个事件
            //return true; //表示我处理了这个事件
        }
        return QWidget::event(e);
    }
    void MyPushButton::mousePressEvent(QMouseEvent *e)
    {
    
        qDebug()<<"子类的事件执行"<<endl;
    }
    
    MyPushButton::MyPushButton()
    {
    
    }

    Widget.h:

    #ifndef WIDGET_H
    #define WIDGET_H
    #include <QWidget>
    #include "MyPushButton.h"
    class Widget : public QWidget
    {
        Q_OBJECT
    
    public:
        Widget(QWidget *parent = 0);
        ~Widget();
        bool event(QEvent *e);
        void mousePressEvent(QMouseEvent *e);
    private:
        MyPushButton *mypushbutton;
    };
    
    #endif // WIDGET_H

    Widget.cpp:

    #include "widget.h"
    #include<QDebug>
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
    {
        mypushbutton=new MyPushButton("按钮",this);
    }
    
    bool Widget::event(QEvent *e)
    {
        return QWidget::event(e);
    }
    
    void Widget::mousePressEvent(QMouseEvent *e)
    {
      qDebug()<<"父类的事件执行"<<endl;
    }
    
    
    
    Widget::~Widget()
    {
    
    }

    main.cpp:

    #include "widget.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        w.show();
    
        return a.exec();
    }

    效果:

  • 相关阅读:
    移动应用调试之Inspect远程调试
    使用Stickers拓展集成iMessage简单功能
    iOS 在工程内部创建一个静态库target
    Xcode10 library not found for -lstdc++ 找不到问题
    git 操作规范
    java里面jre版本过低怎么修改
    java实现滑动列表找到目标并且选择
    java实现获取toast弱提示
    查询语句集合
    java-clienk 实现获取手机应用设备信息
  • 原文地址:https://www.cnblogs.com/SunShine-gzw/p/13270001.html
Copyright © 2011-2022 走看看