• QT之鼠标事件


    Widget.h:

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include<QWidget>
    #include<QMouseEvent>
    class Widget : public QWidget
    {
        Q_OBJECT
    public:
        Widget(QWidget *parent = 0);
        ~Widget();
        void mousePressEvent(QMouseEvent* e);
        void mouseReleaseEvent(QMouseEvent* e);
        void mouseMoveEvent(QMouseEvent* e);
    };
    
    #endif // WIDGET_H

    Widget.cpp:

    #include "widget.h"
    #include<QDebug>
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
    {
        this->setMouseTracking(true);//设置鼠标移动事件不需要按下也能促发
    }
    
    void Widget::mousePressEvent(QMouseEvent* e)
    {
        switch(e->button())
        {
        case Qt::LeftButton:
            qDebug()<<"leftbutton is pressed"<<endl;
            break;
         case   Qt::RightButton:
             qDebug()<<"rightbutton  is pressed"<<endl;
            break;
        case Qt::MidButton:
             qDebug()<<"midbutton  is pressed"<<endl;
            break;
         default:
            break;
        }
    }
    void Widget::mouseReleaseEvent(QMouseEvent* e)
    {
        switch(e->button())
        {
        case Qt::LeftButton:
            qDebug()<<"leftbutton is released"<<endl;
            break;
         case   Qt::RightButton:
             qDebug()<<"rightbutton  is released"<<endl;
            break;
        case Qt::MidButton:
             qDebug()<<"midbutton  is released"<<endl;
            break;
         default:
            break;
        }
    }
    void Widget::mouseMoveEvent(QMouseEvent* e)
    {
        qDebug()<<e->pos()<<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();
    }

    效果:

  • 相关阅读:
    java 面向对象(十八):包装类的使用
    java 面向对象(十七):单元测试方法
    rxjava2学习
    多线程-wait(),notify(),notifyAll()
    多线程-Thread.join()的运用
    66. Plus One
    理解Android View的事件传递机制
    78. Subsets
    程序员学习与成长的方法(转发)
    android查询天气demo,基于mvp+kotlin+rxjava2+retrofit2
  • 原文地址:https://www.cnblogs.com/SunShine-gzw/p/13270171.html
Copyright © 2020-2023  润新知