Qt中的事件

写一个 可以拖动的按钮

DraggablePushButton.h 头文件

#ifndef DRAGGABLEPUSHBUTTON_H
#define DRAGGABLEPUSHBUTTON_H#include <QPushButton>
#include <QMouseEvent>class DraggablePushButton : public QPushButton
{Q_OBJECTpublic:explicit DraggablePushButton(QWidget *parent = nullptr);protected:void mousePressEvent(QMouseEvent *event) override;void mouseMoveEvent(QMouseEvent *event) override;void mouseReleaseEvent(QMouseEvent *event) override;private:void showDialog();private:QPoint m_pressPosition;  // 鼠标按下位置int m_pressTime;         // 鼠标按下时间戳bool m_isDragging;       // 是否是拖动操作
};#endif // DRAGGABLEPUSHBUTTON_H

实现  DraggablePushButton.cpp

#include "DraggablePushButton.h"
#include <QMessageBox>
#include <QApplication>
#include <QDebug>DraggablePushButton::DraggablePushButton(QWidget *parent): QPushButton(parent), m_isDragging(false)
{
}void DraggablePushButton::mousePressEvent(QMouseEvent *event)
{if (event->button() == Qt::LeftButton) {m_pressPosition = event->pos();  // 记录鼠标按下的位置m_pressTime = event->timestamp();  // 记录鼠标按下的时间// 阻止默认的点击行为event->accept();}else {QPushButton::mousePressEvent(event);  // 其它鼠标按下事件处理}
}void DraggablePushButton::mouseMoveEvent(QMouseEvent *event)
{if (m_isDragging) {// 鼠标拖动时更新按钮位置QPoint delta = event->pos() - m_pressPosition;move(pos() + delta);  // 移动按钮event->accept();}else {// 判断是否是拖动操作int distance = (event->pos() - m_pressPosition).manhattanLength();if (distance > QApplication::startDragDistance()) {m_isDragging = true;  // 开始拖动}}
}void DraggablePushButton::mouseReleaseEvent(QMouseEvent *event)
{if (event->button() == Qt::LeftButton) {int releaseTime = event->timestamp();  // 记录释放的时间int timeDiff = releaseTime - m_pressTime;  // 计算按下和释放的时间差if (m_isDragging) {// 如果是拖动操作qDebug() << "Dragged";} else {// 如果按下和释放的时间差较短,并且鼠标位置没有变化,判定为双击if (timeDiff < QApplication::doubleClickInterval()) {qDebug() << "Double Clicked";showDialog();  // 弹出对话框} else {qDebug() << "Single Clicked";}}m_isDragging = false;  // 重置拖动标志event->accept();}else {QPushButton::mouseReleaseEvent(event);  // 其它鼠标释放事件处理}
}void DraggablePushButton::showDialog()
{// 弹出对话框QMessageBox::information(this, "Double Clicked", "You double-clicked the button!");
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/69941.shtml

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

相关文章

Postgresql 开发环境搭建指南(WindowsLinux)

一、Postgresql 简介 PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS)&#xff0c;在灵活的BSD许可证下发行。 RDBMS 是关系数据库管理系统&#xff0c;是建立实体之间的联系&#xff0c;最后得到的是关系表。 ORDBMS在原来关系数据库的基础上&#xff0c;增加了一些新…

2025前端面试题

2025前端面试题 uniappuniapp如何打包发版到线上 vuevue3构建项目vue如何封装组件vue2的响应式原理vue3的响应式原理vue3和2的区别Vuex中的重要核心属性有哪些&#xff1f;Vue-router有哪几种路由守卫 es6数组有哪些常用方法ES6的新特性Promiseasync/await防抖和节流&#xff0…

大语言模型多代理协作(MACNET)

大语言模型多代理协作(MACNET) Scaling Large-Language-Model-based Multi-Agent Collaboration 提出多智能体协作网络(MACNET),以探究多智能体协作中增加智能体数量是否存在类似神经缩放定律的规律。研究发现了小世界协作现象和协作缩放定律,为LLM系统资源预测和优化…

dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型

要将 dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型. 申请阿里云百练的KEY 添加模型 测试模型

Win10环境使用Dockerdesktop部署Dify集成Deepseek

Win10环境借助Dockerdesktop部署Dify集成Deepseek 前言 之前笔者已经部署了基于Ollama的Deepseek&#xff1a; https://lizhiyong.blog.csdn.net/article/details/145505686 安装官方指示&#xff0c;还可以集成很多组件拓展玩法&#xff1a; https://github.com/deepseek…

23、深度学习-自学之路-激活函数relu、tanh、sigmoid、softmax函数的正向传播和反向梯度。

在使用这个非线性激活函数的时候&#xff0c;其实我们重点还是学习的是他们的正向怎么传播&#xff0c;以及反向怎么传递的。 如下图所示&#xff1a; 第一&#xff1a;relu函数的正向传播函数是&#xff1a;当输入值&#xff08;隐藏层&#xff09;值大于了&#xff0c;就输出…

cameralib 安装

目录 linux安装&#xff1a; 测试安装是否成功&#xff1a; linux安装&#xff1a; pip install githttps://github.com/isarandi/cameralib.git pip install githttps://github.com/isarandi/boxlib.git pip install githttps://github.com/isarandi/poseviz.git githttps…

ML.NET库学习005:基于机器学习的客户细分实现与解析

文章目录 ML.NET库学习005&#xff1a;基于机器学习的客户细分实现与解析项目主要目的和原理目的原理 项目概述实现的主要功能主要流程步骤使用的主要函数方法关键技术 主要功能和步骤功能详细解读详细步骤解析 数据集及其处理步骤数据集处理步骤关键处理步骤原理1. 数据清洗与…

webpack打包优化策略

1. 减少打包体积 减少打包文件的大小是为了提高加载速度&#xff0c;降低网络带宽消耗&#xff0c;提升用户体验。常见的减少打包体积的优化策略包括&#xff1a; 代码分割&#xff08;Code Splitting&#xff09;&#xff1a;将代码拆分成多个小文件&#xff0c;让浏览器按需…

RocketMQ与kafka如何解决消息积压问题?

前言 消息积压问题简单来说&#xff0c;就是MQ存在了大量没法快速消费完的数据&#xff0c;造成消息积压的原因主要在于“进入的多&#xff0c;消费的少”&#xff0c;或者生产的速度过快&#xff0c;而消费速度赶不上&#xff0c;基于这一问题&#xff0c;我们主要介绍如何通过…

RISC-V平台编译 state-thread x264 ffmpeg zlog

1.state-threads 源码下来之后 直接 make linux-debug 目录下生成了对应的.a 和 .h文件 gcc test.c -o test -l st -L . #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/socket.h&g…

用easyExcel如何实现?

要使提供的 ExcelModelListener 类来解析 Excel 文件并实现批量存储数据库的功能&#xff0c;需要结合 EasyExcel 库来读取 Excel 数据。具体来说&#xff0c;可以使用 EasyExcel.read() 方法来读取 Excel 文件&#xff0c;并指定 ExcelModelListener 作为事件监听器。 下面是…

BUU37 [DASCTF X GFCTF 2024|四月开启第一局]web1234【代码审计/序列化/RCE】

Hint1&#xff1a;本题的 flag 不在环境变量中 Hint2&#xff1a;session_start&#xff08;&#xff09;&#xff0c;注意链子挖掘 题目&#xff1a; 扫描出来www.zip class.php <?phpclass Admin{public $Config;public function __construct($Config){//安全获取基…

Mysql中使用sql语句生成雪花算法Id

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

Go框架面试突击!30道高频题解析

前言 有粉丝朋友问我能不能整理Go主流框架方面的面试题&#xff0c;安排&#xff01; 这篇文章分享了gRPC、GoFrame、GoZero、GoMicro、GORM、Gin等主流框架的30道面试题和详解。 需要大厂面经的朋友们也可以直接加我好友&#xff0c;私信我。 gRPC 1.gRPC是什么&#xff…

@JsonRawValue 注解

这里写目录标题 1. 问题2. JsonRawValue 注解说明 1. 问题 在实际开发中我遇到这样一个问题&#xff0c;查询数据库的结果返回的content内容是含有转移符的JSON字符串&#xff0c;但是我需要返回的不包含转移的String字符串。经过我一顿折腾并未发现解决办法&#xff0c;直到J…

node.js+兰空图床实现随机图

之前博客一直用的公共的随机图API&#xff0c;虽然图片的质量都挺不错的&#xff0c;但是稳定性都比较一般&#xff0c;遂打算使用之前部署的兰空图床&#xff0c;自己弄一个随机图 本文章服务器操作基于雨云——新一代云服务提供商的云服务器进行操作&#xff0c;有兴趣的话可…

MySQL binlog的三种模式

MySQL 的 binlog&#xff08;Binary Log&#xff09; 默认的模式是 STATEMENT&#xff0c;即 语句模式。在这种模式下&#xff0c;MySQL 会记录所有对数据库执行的数据修改操作&#xff08;如 INSERT、UPDATE、DELETE 等&#xff09;的 SQL 语句。 1. binlog 的三种模式 MySQL…

25农村发展研究生复试面试问题汇总 农村发展专业知识问题很全! 农村发展复试全流程攻略 农村发展考研复试真题汇总

农村发展复试当然有好的建议&#xff01;前提是复试重点面试题背好&#xff01; 你是不是也在为农村发展考研复试发愁&#xff1f;担心自己准备不充分、表现不好&#xff1f;别急&#xff01;今天&#xff0c;学姐——复试面试拿下90分成功上岸的学姐&#xff0c;来给大家分享…

读取本地excel并生成map,key为第一列,value为第二列

添加依赖&#xff1a;在 pom.xml 文件中添加以下依赖&#xff1a; <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency&…