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

  • 相关阅读:
    razor 拼接字符串
    转,CV和resume的区别
    b/s开发者的困境
    sql 下,float和numeric
    VS2010 + Entity FrameWork 4.4 +Mvc 4.0 出现的错误
    Nuget 管理entity framework
    关于 Code First
    C# 输出控制台结果到文件
    WCF wsdlexception(at/html):faultCode=INVALID_WSDL
    Silverlight环境配置
  • 原文地址:https://www.cnblogs.com/DreamDog/p/9159983.html
Copyright © 2011-2022 走看看