Qt-鼠标事件

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include<QLabel>
#include<QStatusBar>
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    QLabel *labelStatus;
    QLabel *labelMousePos;
protected:
    void mouseMoveEvent(QMouseEvent *e);
    void mousePressEvent(QMouseEvent *e);
    void mouseReleaseEvent(QMouseEvent *e);
    void mouseDoubleClickEvent(QMouseEvent *e);
 
};
 
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include<QMouseEvent>
#include<QString>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(750,500);
setWindowTitle(tr("Get Mouse Event"));
setCursor(Qt::CrossCursor);
labelStatus=new QLabel();
labelStatus->setMinimumSize(100,20);
labelStatus->setText(tr("Mouse Position"));
labelStatus->setFixedWidth(100);
labelMousePos=new QLabel();
labelMousePos->setText(tr(""));
labelMousePos->setFixedWidth(80);
statusBar()->addPermanentWidget(labelStatus);
statusBar()->addPermanentWidget(labelMousePos);
this->setMouseTracking(true);
 
}
 
MainWindow::~MainWindow()
{
 
}
void MainWindow::mouseMoveEvent(QMouseEvent *e)
{
    labelMousePos->setText("("+QString::number(e->x())+","+QString::number(e->y())+")");
}
void MainWindow::mousePressEvent(QMouseEvent *e)
{
    QString str="("+QString::number(e->x())+","+QString::number(e->y())+")";
    if(e->button()==Qt::LeftButton)
    {
        statusBar()->showMessage(tr("Mouse Left Button Pressed: ")+str);
    }
    else if(e->button()==Qt::RightButton)
    {
        statusBar()->showMessage(tr("Message Right button Pressed: ")+str);
    }
    else if(e->button()==Qt::MidButton)
    {
        statusBar()->showMessage(tr("Message Middle button Pressed: ")+str);
    }
}
void MainWindow::mouseReleaseEvent(QMouseEvent *e)
{
QString str="("+QString::number(e->x())+","+QString::number(e->y())+")";
statusBar()->showMessage(tr("Mouse Release")+str,3000);
 
}
void MainWindow::mouseDoubleClickEvent(QMouseEvent *e)
{
QString str="("+QString::number(e->x())+","+QString::number(e->y())+")";
if(e->button()==Qt::LeftButton)
{
    statusBar()->showMessage(tr("Mouse Left Button DoubleClicked: ")+str);
}
else if(e->button()==Qt::RightButton)
{
    statusBar()->showMessage(tr("Message Right button DoubleClicked: ")+str);
}
else if(e->button()==Qt::MidButton)
{
    statusBar()->showMessage(tr("Message Middle button DoubleClicked: ")+str);
}
}
 

相关文章:

  • 2021-07-20
  • 2021-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-25
猜你喜欢
  • 2022-12-23
  • 2021-09-14
  • 2021-12-26
  • 2021-06-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案