鼠标事件 获取鼠标坐标及点击事件

运行效果:
鼠标事件 获取鼠标坐标及点击事件_第1张图片
头文件
#ifndef MOUSEEVENT_H
#define MOUSEEVENT_H

#include
#include
#include
#include

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

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

你可能感兴趣的:(C++,Qt,qt,鼠标事件)