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

news2024/11/30 9:43:28

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_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    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.coloradmin.cn/o/2059676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鹤岗房全国蔓延,现在要不要买房?

文&#xff5c;琥珀食酒社 作者 | 积溪 房子卖白菜价、人人都能买得起的时代 真的要来了 以前啊你花2万块钱 在大城市买不到一个厕所 可现在只要几万块你就能买一整套房 还带装修和家电 而且这样的房子还很多 “鹤岗”房已经在全国快速蔓延 那对咱普通人来说到底是好…

Linux入门——02文件与权限

1.文件 文件的创建&#xff0c;是在磁盘上创建&#xff08;外存与内存&#xff1a;内存掉电已失性&#xff09;空文件要占外盘内存&#xff08;文件的属性是数据 &#xff0c;文件 文件内容数据 文件属性数据&#xff09;操作文件的方法&#xff08;1.操作文件内容 2.操作文…

50etf期权应该如何交易?怎么才能参与期权?

今天带你了解50etf期权应该如何交易&#xff1f;怎么才能参与期权&#xff1f;不少投资者不理解期权的交易方式&#xff0c;其实期权也就是多了一个多卖方的操作方式。期权的种类虽然分为好几种&#xff0c;但是交易的方式都是差不多的。 50ETF期权是指在中国金融市场上交易的…

FreeRTOS 快速入门(四)之队列

目录 一、队列的特性1、数据存储2、传输数据的两种方法3、队列的阻塞访问 二、多任务访问2.1 阻塞队列读取2.2 阻塞队列写入2.3 阻塞多个队列 三、队列函数1、创建2、删除3、写队列4、读队列5、查询6、覆盖/偷看 四、示例1、例一&#xff1a;从队列接收时阻塞1.1 写入队列1.2 从…

EchoMimic原文翻译+代码调试+不同模型对比

文章目录 EchoMimic原文翻译EchoMimic:逼真的音频驱动肖像动画通过可编辑的landmark条件Abstract1. Introduction2. Related Works2.1. 扩散模型2.2.肖像动画:从视频到基于图像的方法 3. Method3.1. Preliminaries3.2. Model Architecture3.3. Training Details3.4. Inference …

acwing走迷宫

迷宫题目 给定一个 nm 的二维整数数组&#xff0c;用来表示一个迷宫&#xff0c;数组中只包含 0 或 1&#xff0c;其中 0 表示可以走的路&#xff0c;1 表示不可通过的墙壁。最初&#xff0c;有 一个人位于左上角 (1,1)处&#xff0c;已知该人每次可以向上、下、左、右任意一…

20:【stm32】定时器一:时基单元

时基单元 1、什么是定时器2、时基单元的基本结构2.1&#xff1a;脉冲的来源2.2&#xff1a;预分频器PSC2.3&#xff1a;计数器CNT2.4&#xff1a;update事件与预加载 3、标准库编程3.1&#xff1a;通过定时器中断来设置延迟函数 1、什么是定时器 定时器是一种专门负责定时功能…

5个自动化面试题,助你过关斩将!

一、python深拷贝与浅拷贝的区别 Python中的深拷贝&#xff08;deep copy&#xff09;和浅拷贝&#xff08;shallow copy&#xff09;是两种不同的对象复制方式&#xff0c;它们之间的主要区别在于复制的内容和范围。 浅拷贝&#xff08;Shallow Copy&#xff09; 浅拷贝会创…

最新官方破解版FL Studio24.1.1安装包下载

大家好&#xff01;&#x1f44b;今天我要和大家分享一款让我彻底着迷的音乐制作神器——FL Studio 24.1.1中文版本。作为一个热爱音乐的创作者&#xff0c;我一直在寻找能让我更高效、更有创意地完成作品的软件。直到我遇到了它&#xff0c;我的世界彻底改变了&#xff01; 【…

操作系统(Ubuntu安装配置)

1.1.什么是操作系统 操作系统&#xff08;Operating System&#xff0c;简称OS&#xff09;是一种系统软件&#xff0c;它是计算机硬件和应用软件之间的桥梁。它管理计算机的硬件和软件资源&#xff0c;为应用程序提供接口和服务&#xff0c;并协调应用程序的运行。操作系统是…

超声波清洗机是智商税吗?专业博主分享四大必买超声波清洗机款式

有些人觉得超声波清洗机不过是个“智商税”&#xff0c;花几百块买个小盒子不值当&#xff0c;毕竟自己用手也能清洗。但这种看法过于片面。事实上&#xff0c;超声波清洗已经有几十年的历史&#xff0c;随着科技的发展&#xff0c;现代超声波清洗机不仅能够批量、自动清洁&…

C#学习之路day2

一、变量 用来在存储计算机当中存储数据 1、常见的数据类型&#xff0c; 2、声明变量的方式 *声明&#xff1a;变量类型 变量名 &#xff1b; *赋值&#xff1a;变量名 值 &#xff1b; 先声明 &#xff0c;再赋值 &#xff0c;再使用 int num ; //声明num 10; //赋值i…

无人系统特刊合集(一)丨MDPI特刊推荐

特刊征稿 01 特刊名称&#xff1a; Civil and Public Domain Applications of Unmanned Aviation 参与期刊&#xff1a; 截止时间&#xff1a; 摘要提交截止日期 2024年10月31日 投稿截止日期 2024年12月31日 目标及范围&#xff1a; 在过去十年中&#xff0c;无人系统经历…

号称企业通讯利器的智能接打电话机器人,好用吗?

企业为了提升效率、优化客户体验&#xff0c;不断探索新的技术工具。智能接打电话机器人作为其中的佼佼者&#xff0c;正逐渐受到市场的广泛关注。那么&#xff0c;智能接打电话机器人究竟好用吗&#xff1f;它能为企业带来哪些实质性的改变呢&#xff1f; 一、智能接打电话机器…

【HTML】弹性盒子 (display: flex) 布局

Flex弹性布局 容器属性flex-direction&#xff08;主轴的方向&#xff09;flex-wrap&#xff08;主轴的项目换行&#xff09;justify-content&#xff08;项目在主轴上的对齐方式&#xff09;align-items&#xff08;项目在交叉轴上的对齐方式&#xff09;align-content&#x…

开学季必备神器!南卡Pro5骨传导耳机,运动学习两不误!

随着科技的不断进步&#xff0c;耳机已经从单纯的听觉工具&#xff0c;演变成了我们日常生活中不可或缺的伴侣。特别是在充满活力的开学季&#xff0c;一款好的耳机不仅能提升学习效率&#xff0c;还能在运动时提供额外的动力。而骨传导技术的出现&#xff0c;更是为耳机领域带…

Flutter入门——从简单的计数器demo入手

Flutter入门——从简单的计数器demo入手 前言 flutter是现如今很热门的跨平台开发框架&#xff0c;只需要一套代码就能在六个平台上运行&#xff0c;现在在移动端的应用比较成熟&#xff0c;本片文章会是Flutter的简单入门&#xff0c;从一个简单的demo入手分析 笔者是Android…

OpenCvSharp.Internal.NativeMethods“的类型初始值设定项引发异常

错误截图&#xff1a; WPF项目 A界面按钮方法调用成员实例B里面这个初始化Mat对象方法 后台ViewModel代码类似&#xff1a; AViewModel{ B b; public void BtnClick(){ b.test(); } } 报错&#xff1a; 看一眼根据经验确认是DLL的问题&#xff0c;于是乎把nuget包配置和…

毛中特25版肖1000题选择题知识点(乱序)

马原&#xff1a;马原25版肖1000题选择题知识点&#xff08;乱序&#xff09;-CSDN博客 毛泽东明确提出的&#xff0c;是把马克思列宁主义基本原理同中国具体实际进行“第二次结合&#xff0c;找出在中国怎样建设社会主义的道路”的任务&#xff0c;不是“第二个结合”(马克思…

USB3.2 摘录(五)

系列文章目录 USB3.2 摘录&#xff08;一&#xff09; USB3.2 摘录&#xff08;二&#xff09; USB3.2 摘录&#xff08;三&#xff09; USB3.2 摘录&#xff08;四&#xff09; USB3.2 摘录&#xff08;五&#xff09; 文章目录 系列文章目录8 协议层&#xff08;Protocol Lay…