自学QT之鼠标事件

QT是事件驱动的,监听事件天然也是一个重点啦。首先是监听鼠标事件。函数

新建项目,基于mainwindow头文件:this

#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 *);
private:
    QLabel *statusLabel;
    QLabel *mousePosLabel;
};

#endif // MOUSEEVENT_H


主要代码:spa

#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);
}

MouseEvent::~MouseEvent()
{

}
void MouseEvent::mousePressEvent(QMouseEvent *e)
{
    QString str="("+QString::number(e->x())+","+QString::number
            (e->y())+")";
    if(e->button()==Qt::LeftButton)
    {
        statusBar()->showMessage(tr("左键")+str);
    }
    if(e->button()==Qt::RightButton)
    {
        statusBar()->showMessage(tr("右键")+str);
    }
    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 *)
{


}


这里的 setMouseTracking()函数,是用来决定是否 实时追踪鼠标,默认的是false。但是咱们须要实时得到鼠标的位置,所以须要设置诶true。 code

运行效果:事件


相关文章
相关标签/搜索