鼠标事件主要是鼠标的点击、释放、移动
.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
#include <QStatusBar>
#include <QMouseEvent>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void mousePressEvent(QMouseEvent* event);
void mouseMoveEvent(QMouseEvent* event);
void mouseReleaseEvent(QMouseEvent* event);
private:
QLabel* statusLabel;
QLabel*MousePosLabel;
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("鼠标事件");
statusLabel = new QLabel;
statusLabel->setText("当前位置");
statusLabel->setFixedWidth(100);
MousePosLabel = new QLabel;
MousePosLabel->setText("");
MousePosLabel->setFixedWidth(100);
statusBar()->addPermanentWidget(statusLabel);
statusBar()->addPermanentWidget(MousePosLabel);
this->setMouseTracking(true);
resize(400,200);
}
void MainWindow::mousePressEvent(QMouseEvent* event)
{
QString str = "("+QString::number(event->x())+","+QString::number(event->y())+")";
if(event->button()==Qt::LeftButton)
{
statusBar()->showMessage(tr("左键")+str);
}
else if(event->button() == Qt::RightButton)
{
statusBar()->showMessage(tr("右键")+str);
}
else if(event->button() == Qt::MidButton)
{
statusBar()->showMessage(tr("中健")+str);
}
}
void MainWindow::mouseMoveEvent(QMouseEvent* event)
{
MousePosLabel->setText("("+QString::number(event->x())+","+QString::number(event->y())+")");
}
void MainWindow::mouseReleaseEvent(QMouseEvent* event)
{
QString str = "("+QString::number(event->x())+","+QString::number(event->y())+")";
statusBar()->showMessage(tr("释放在:")+str,3000);
}
MainWindow::~MainWindow()
{
delete ui;
}
效果展示:
仅作为个人学习记录