Qt 拖动事件

文章目录

  • 1 自定义控件 TextEdit
  • 2 实现打开文件功能
  • 3 实现鼠标滚轮放大字体

在这里插入图片描述

QEvent::DragEnter

当拖动文件进入到窗口/控件中时,触发该事件,它对应的子类是QDragEnterEvent

QEvent::DragLeave

当拖动文件离开窗口/控件时,触发该事件,它对应的子类是QDragLeaveEvent

QEvent::DragMove

当拖动文件在窗口/控件中移动时,触发该事件,它对应的子类是QDragMoveEvent

QEvent::Drop

当拖动文件在窗口/控件中移动时,触发该事件,它对应的子类是QDragMoveEvent

1 自定义控件 TextEdit

自定义一个标签控件TextEditx,让它继承自QTextEdit,然后重写拖放相关的函数。

添加自定义控件类TextEditX ,在 texteditx.h 文件中

// TextEditX.h
protected:// 重写父类的方法void dragEnterEvent(QDragEnterEvent *e);void dragMoveEvent(QDragMoveEvent *e);void dragLeaveEvent(QDragLeaveEvent *e);void dropEvent(QDropEvent *e);

texteditx.cpp 文件中

// TextEditX.cpp
TextEditX::TextEditX(QWidget *parent) : QTextEdit{parent} {// 部件将接受鼠标拖放事件this->setAcceptDrops(true);
}void TextEditX::dragEnterEvent(QDragEnterEvent *e) {qDebug() << "dragEnterEvent";// 默认情况下,窗口部件不接受拖动e->acceptProposedAction();
}void TextEditX::dragMoveEvent(QDragMoveEvent *e) {qDebug() << "dragMoveEvent";
}void TextEditX::dragLeaveEvent(QDragLeaveEvent *e) {qDebug() << "dragLeaveEvent";
}void TextEditX::dropEvent(QDropEvent *e) {qDebug() << "dropEvent";
}

2 实现打开文件功能

texteditx.cpp文件中

// texteditx.cpp
void TextEditX::dropEvent(QDropEvent *e) {qDebug() << "dropEvent";QList<QUrl> urls = e->mimeData()->urls();if (urls.isEmpty()) {return;}// 获取这个文件名QString fileName = urls.first().toLocalFile();qDebug() << urls.first() << "\n" << fileName;// 打开文件QFile file(fileName);// 打开失败返回 falseif (file.open(QIODevice::ReadOnly)) {setPlainText(file.readAll());}
}

3 实现鼠标滚轮放大字体

texteditx.h 文件中

protected:// 重写滚轮事件void wheelEvent(QWheelEvent *e);

texteditx.cpp 文件中

void TextEditX::wheelEvent(QWheelEvent *e) {if (QApplication::keyboardModifiers() == Qt::ControlModifier) {if (e->angleDelta().y() > 0) {// 滚轮远离使用者, 进行放大this->zoomIn();} else {// 滚轮靠近使用者, 进行缩小this->zoomOut();}} else {// 调用父类的实现, 否则无法实现文本的上下滚动QTextEdit::wheelEvent(e);}
}

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

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

相关文章

WordPress高端后台美化WP Adminify Pro优化版

后台UI美化WP Adminify Pro修改自定义插件&#xff0c;适合建站公司和个人使用&#xff0c;非常高大上&#xff0c;下载地址&#xff1a;WP Adminify Pro优化版 修复记录&#xff1a; 1、修复已知BUG 2、修复手机版兼容问题 3、修复打开速度&#xff0c;原版打开速度太慢 4…

自动裁剪人脸:简化你的数字人素材准备

在做数字人时,需要对采集的数据进行预处理,然后才能进行模型训练, 预处理常用的操作有:去背景 音频重采样 视频裁剪 音频特征提取等等,今天我们来分享一个自动化脚本: 对原图/视频进行人脸检测并根据目标尺寸以人脸为中心进行裁剪. 目录 1. 效果 2. 对图片进行裁剪 3.对视频…

DeepLearning in Pytorch|共享单车预测NN详解(思路+代码剖析)

目录 概要 一、代码概览 二、详解 基本逻辑 1.数据准备 2.设计神经网络 初版 改进版 测试 总结 概要 原文链接&#xff1a;DeepLearning in Pytorch|我的第一个NN-共享单车预测 我的第一个深度学习神经网络模型---利用Pytorch设计人工神经网络对某地区租赁单车的使用…

umi4 项目使用 keepalive 缓存页面(umi-plugin-keep-alive、react-activation)

umi4使用keepalive 配置文件config\config.ts export default defineConfig({plugins: [umi-plugin-keep-alive], });安装add umi-plugin-keep-alive yarn add umi-plugin-keep-alive页面 A import { KeepAlive, history, useAliveController } from umijs/max; const Page…

CSAPP Malloc lab

CSAPP Malloc Lab 目标 实现一个简单的动态存储分配器。 评分标准 空间利用率应当减少internal 和 external fragmentation. memory utilization memory utilization payload / heap size fragmentation internal fragmentation external fragmentation throughput T 越接…

【深度学习笔记】6_9 深度循环神经网络deep-rnn

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 6.9 深度循环神经网络 本章到目前为止介绍的循环神经网络只有一个单向的隐藏层&#xff0c;在深度学习应用里&#xff0c;我们通常会用…

嵌入式Qt 制作一个登录对话框

一.登录对话框需求分析 二.代码实现 main.c&#xff1a; #include <QtGui/QApplication> #include "widget.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }Widget.h&#xff1a; #ifndef _WIDGET_H_…

为什么选择 Flink 做实时处理

优质博文&#xff1a;IT-BLOG-CN 为什么选择 Flink 【1】流数据更真实地反映了我们的生活方式&#xff08;实时聊天&#xff09;&#xff1b; 【2】传统的数据架构是基于有限数据集的&#xff08;Spark 是基于微批次数据处理&#xff09;&#xff1b; 【3】我们的目标&#xf…

ELK-介绍及Elasticsearch集群搭建

ELK是三个开源软件的缩写&#xff0c;分别为Elasticsearch、Logstash、kibana它们都是开源软件。后来新增了一个FileBeat&#xff0c;它是一个轻量及的日志收集处理工具&#xff0c;因为Logstash由java程序开发&#xff0c;比较消耗内存资源&#xff0c;后来将Logstash使用go语…

【论文阅读】(2024.03.05-2024.03.15)论文阅读简单记录和汇总

(2024.03.05-2024.03.15)论文阅读简单记录和汇总 2024/03/05&#xff1a;随便简单写写&#xff0c;以后不会把太详细的记录在CSDN&#xff0c;有道的Markdown又感觉不好用。 目录 &#xff08;ICMM 2024&#xff09;Quality Scalable Video Coding Based on Neural Represent…

.net6Api后台+uniapp导出Excel

之前的这个是vue3写法&#xff0c;后端是.net6Api.net6Api后台VUE3前端实现上传和下载文件全过程_vue3 下载文件-CSDN博客 在现在看来似乎搞的复杂了&#xff0c;本次记录一下.net6Api后台uniapp导出Excel。 后端和之前的不一样&#xff0c;前端也和之前的不一样&#xff0c;…

【C语言】深入理解指针(进阶篇)

一、数组名的理解 数组名就是地址&#xff0c;而且是数组首元素的地址。 任务&#xff1a;运行以下代码&#xff0c;看数组名是否是地址。 #include <stdio.h> int main() {int arr[] { 1,2,3,4,5,6,7,8,9,0 };printf("&arr[0] %p\n", &arr[0]);pri…

IntelliJ IDEA Dev 容器

​一、dev 容器 开发容器&#xff08;dev 容器&#xff09;是一个 Docker 容器&#xff0c;配置为用作功能齐全的开发环境。 IntelliJ IDEA 允许您使用此类容器来编辑、构建和运行您的项目。 IntelliJ IDEA 还支持多个容器连接&#xff0c;这些连接可以使用 Docker Compose …

从零开始:神经网络(1)——神经元和梯度下降

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 一. 神经网络 1. 神经网络的发展 先了解一下神经网络发展的历程。从单层神经网络&#xff08;感知器&#xff09;开…

HCIP --- BGP 综合实验

实验拓扑图&#xff1a; 实验要求&#xff1a; 1.AS1存在两个环回&#xff0c;一个地址为192.168.1.0/24该地址不能 在任何协议中宣告 AS3中存在两个环回&#xff0c;一个地址为192.168.2.0/24该地址不能在任何协议中宣告&#xff0c;最终要求这两个环回可以互相通讯. 2.整个…

C语言--函数指针变量和函数指针数组的区别(详解)

函数指针变量 函数指针变量的作用 函数指针变量是指向函数的指针&#xff0c;它可以用来存储函数的地址&#xff0c;并且可以通过该指针调用相应的函数。函数指针变量的作用主要有以下几个方面&#xff1a; 回调函数&#xff1a;函数指针变量可以作为参数传递给其他函数&…

字典Trie树

字典树 : 概念 建字典树 查询 : 代码模板 : const int N100010; int n; char s[N]; int ch[N][26],cnt[N],idx;void insert(char *s){int p0;for(int i0; s[i]; i ){int js[i]-a;//字母映射if(!ch[p][j])ch[p][j]idx;pch[p][j];}cnt[p];//插入次数 } int query(char *s){i…

零知识玩转AVH(1)—— 初次接触

零、引言 近期&#xff0c;CSDN上的一位工作人员让我参加一个嵌入式的活动。她的原话是这样&#xff1a;“咱们这个主要是百度智能云虚拟硬件的活动&#xff0c;就是根据ARM的avh硬件&#xff08;虚拟硬件&#xff09;铲平&#xff0c;去开发一个demo&#xff0c;以及根据demo…

全栈的自我修养 ———— css中常用的布局方法flex和grid

在项目里面有两种常用的主要布局:flex和grid布局&#xff08;b站布局&#xff09;&#xff0c;今天分享给大家这两种的常用的简单方法&#xff01; 一、flex布局1、原图2、中心对齐3、主轴末尾或者开始对其4、互相间隔 二、grid布局1、基本效果2、加间隔3、放大某一个元素 一、…

1950-2022年各区县逐年平均降水量数据

1950-2022年各区县逐年平均降水量数据 1、时间&#xff1a;1950-2022年 2、指标&#xff1a;省逐年平均降水量 3、范围&#xff1a;33省&#xff08;不含澳门&#xff09;、360地级市、2800个县 4、指标解释&#xff1a;逐年平均降水数据是指当年的日降水量的年平均值&…