当前位置: 首页 > news >正文

QT中鼠标事件示例(包含点击,点击之后移动,释放的坐标获取)

QT中的鼠标事件

  • 简介:
  • 结果展示:
  • 实例代码:

简介:

在Qt中,处理鼠标事件是图形用户界面(GUI)编程中的一个重要方面。Qt通过一系列的事件处理函数来支持鼠标事件的响应。这些事件包括鼠标点击(按下、释放)、鼠标移动、鼠标滚轮滚动等。要在Qt中处理这些事件,你通常需要重写(override)相应的事件处理函数。

以下是一些常见的鼠标事件处理函数及其用途:

mousePressEvent(QMouseEvent *event)
当鼠标按钮被按下时,此事件被触发。你可以通过event->button()来判断是哪个鼠标按钮被按下(例如,Qt::LeftButton、Qt::RightButton等)。
mouseReleaseEvent(QMouseEvent *event)
当鼠标按钮被释放时,此事件被触发。同样,你可以通过event->button()来判断是哪个鼠标按钮被释放。
mouseMoveEvent(QMouseEvent *event)
当鼠标在窗口或控件上移动时,此事件被连续触发。你可以通过event->pos()获取鼠标当前的位置(相对于接收事件的控件的坐标)。
mouseDoubleClickEvent(QMouseEvent *event)
当鼠标在控件上双击时,此事件被触发。这通常用于执行与单击不同的操作,如打开文件或文件夹。
wheelEvent(QWheelEvent *event)
当鼠标滚轮被滚动时,此事件被触发。你可以通过event->angleDelta()获取滚动的方向和量(以度为单位),或者通过event->pixelDelta()获取以像素为单位的滚动量。

结果展示:

MouseTest

在这里插入图片描述

实例代码:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;// QWidget interface
protected:void mouseMoveEvent(QMouseEvent *event);void mousePressEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);};#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMouseEvent>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::mouseMoveEvent(QMouseEvent *event)
{auto pos = event->pos();QString text = QString("Mouse position (%1, %2)").arg(pos.x()).arg(pos.y());ui->label_mouse_position_move->setText(text);
}void MainWindow::mousePressEvent(QMouseEvent *event)
{auto pos = event->pos();QString text = QString("Mouse pressed position (%1, %2)").arg(pos.x()).arg(pos.y());ui->label_mouse_position_press->setText(text);
}void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{auto pos = event->pos();QString text = QString("Mouse released position (%1, %2)").arg(pos.x()).arg(pos.y());ui->label_mouse_position_release->setText(text);
}

ui界面展示:
在这里插入图片描述
希望对你有所帮助。


http://www.mrgr.cn/news/3608.html

相关文章:

  • ArcGIS 数据服务在三维 Cesium/SuperMap 项目中使用遇到的一些问题及其解决方法
  • Spring Boot解决循环注入问题
  • 【Leetcode 1346 】 检查整数及其两倍数是否存在—— 哈希表 战胜了 糟糕的双指针
  • 秘密指南!浮毛会危害人体健康吗?宠物空气净化器帮助解决危害
  • 05.震动控制继电器开关
  • 拓客工具,助你多维度筛选客源!
  • Redis系列之事务
  • 【云原生】MySQL的源码编译
  • 【微服务】微服务组件之Nacos注册中心和配置中心的使用
  • 语言基础/单向链表的构建和使用(含Linux中SLIST的解析和使用)
  • Rust 面向对象编程
  • XSS--DOM破坏案例与靶场
  • HarmonyOS开发案例:列表场景实例-TaskPool
  • http request-01-XMLHttpRequest XHR 简单介绍
  • pnpm install 后还是没有生成 pnpm-lock.yaml 文件
  • 1022. 宠物小精灵之收服
  • Java中Maven打包方式pom、jar、war的区别
  • CSS的:valid和:invalid伪类:增强表单验证的视觉反馈
  • FL Studio24.1.1中文版下载!附带破解补丁包
  • 设计模式---简单工厂模式