zoukankan      html  css  js  c++  java
  • Qt-事件处理-鼠标事件

    根据书中的内容,简单的实现鼠标相关的内容

    源代码如下

    .h
    #ifndef MOUSEEVENT_H
    #define MOUSEEVENT_H
    
    #include <QMainWindow>
    #include <QLabel>
    #include <QStatusBar>
    #include <QMouseEvent>
    class MouseEvent : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MouseEvent(QWidget *parent = 0);
        ~MouseEvent();
    protected:
        void mousePressEvent(QMouseEvent *e);
        void mouseMoveEvent(QMouseEvent *e);
        void mouseReleaseEvent(QMouseEvent *e);
        void mouseDoubleClickEvent(QMouseEvent *e);
    private:
        QLabel *statusLabel;
        QLabel *MousePosLabel;
    };
    
    #endif // MOUSEEVENT_H
    
    .cpp
    #include "mouseevent.h"
    
    MouseEvent::MouseEvent(QWidget *parent)
        : QMainWindow(parent)
    {
        setWindowTitle(tr("鼠标事件"));
        statusLabel = new QLabel;
        statusLabel->setText(tr("当前位置"));
        statusLabel->setFixedWidth(100);
        MousePosLabel = new QLabel;
        MousePosLabel->setText(tr(""));
        MousePosLabel->setFixedWidth(100);
        statusBar()->addPermanentWidget(statusLabel);
        statusBar()->addPermanentWidget(MousePosLabel);
        this->setMouseTracking(true);
        resize(400,200);
    }
    
    void MouseEvent::mousePressEvent(QMouseEvent *e)
    {
        QString str="("+QString::number(e->x())+","+QString::number(e->y()) +")";
        if(e->button()==Qt::LeftButton)
        {
            statusBar()->showMessage(tr("左键")+str);
        }
        else if(e->button()==Qt::RightButton)
        {
            statusBar()->showMessage(tr("右键")+str);
        }
        else if(e->button()==Qt::MidButton)
        {
            statusBar()->showMessage(tr("中键")+str);
        }
    }
    
    void MouseEvent::mouseMoveEvent(QMouseEvent *e)
    {
        MousePosLabel->setText("("+QString::number(e->x())+","+QString::number(e->y())+")");
    }
    
    void MouseEvent::mouseReleaseEvent(QMouseEvent *e)
    {
        QString str="("+QString::number(e->x())+","+QString::number(e->y()) +")";
        statusBar()->showMessage(tr("释放在:")+str,3000);
    }
    
    void MouseEvent::mouseDoubleClickEvent(QMouseEvent *e){}
    
    MouseEvent::~MouseEvent()
    {
    
    }
    

    工程代码:https://gitee.com/DreamLife-Technology_DreamLife/MouseEvent

  • 相关阅读:
    vue实例讲解之axios的使用
    实例讲解webpack的基本使用第四篇
    实例讲解webpack的基本使用第三篇
    实例讲解webpack的基本使用第二篇
    写好一篇技术博客的正确姿势是什么
    实例讲解js正则表达式的使用
    一个综合实例讲解vue的基础知识点。
    vue实例讲解之vue-router的使用
    .NET 串口通信
    textarea赋值时换行符无效的解决方法
  • 原文地址:https://www.cnblogs.com/DreamDog/p/9159983.html
Copyright © 2011-2022 走看看