ディレクトリ
ステータス情報を表示します+ QMouseEvent下QStatusBarマウスイベント
レンダリング:
ステータス情報を表示します+ QMouseEvent下QStatusBarマウスイベント
mouseevent.cpp
#include "mouseevent.h"
mouseevent::mouseevent(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(QStringLiteral("鼠标事件"));
setWindowIcon(QIcon("icon.png"));
//显示鼠标当前实时位置
statusLabel = new QLabel;
statusLabel->setText(QStringLiteral("当前位置:"));
statusLabel->setFixedWidth(100);
//显示鼠标按下或释放时的实时位置
MousePosLabel = new QLabel;
MousePosLabel->setText(QStringLiteral(""));
MousePosLabel->setFixedWidth(100);
//添加控件
statusBar()->addPermanentWidget(statusLabel);
statusBar()->addPermanentWidget(MousePosLabel);
//开启鼠标追踪
this->setMouseTracking(true);
resize(600,400);
}
mouseevent::~mouseevent()
{
}
//鼠标点击事件
void mouseevent::mousePressEvent(QMouseEvent *e){
QString str = "("+QString::number(e->x())+","+QString::number(e->y())+")";
if(e->button()==Qt::LeftButton){//左键按下
statusBar()->showMessage(QStringLiteral("左键:")+str);
}else if(e->button()==Qt::RightButton){//右键按下
statusBar()->showMessage(QStringLiteral("右键:")+str);
}else if(e->button()==Qt::MidButton){//中间键按下
statusBar()->showMessage(QStringLiteral("中间键:")+str);
}
}
//鼠标移动事件
void mouseevent::mouseMoveEvent(QMouseEvent *e){
MousePosLabel->setText("("+QString::number(e->x())+","+QString::number(e->y())+")");
}
//鼠标释放事件
void mouseevent::mouseReleaseEvent(QMouseEvent *e){
}
//鼠标双击事件
void mouseevent::mouseDoubleClickEvent(QMouseEvent *e){
}
mouseevent.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 = nullptr);
~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