qt dragEnterEvent dragLeaveEvent dragMoveEvent dropEvent都不响应的问题解决方案。

环境:vs2019+qt5.14.2

坑哦。让我搞了好久。各种不执行,最后发现,不用vs调制,直接运行exe就能接收拖拽了。

记录一下,感觉是qt的bug。上代码。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTextEdit>

class MainWindow : public QMainWindow
{
	Q_OBJECT

public:
	explicit MainWindow(QWidget* parent = 0);
	~MainWindow();

protected:
	void dragEnterEvent(QDragEnterEvent* e) override;
	void dragLeaveEvent(QDragLeaveEvent* e) override;
	void dragMoveEvent(QDragMoveEvent* event) override;
	void dropEvent(QDropEvent* e) override;

private:
	bool readFile(const QString& fileName);
	QTextEdit* textEdit;
};

#endif // MAINWINDOW_H
#include <QDragEnterEvent>
#include <QMimeData>
#include <QFile>
#include <QUrl>
#include <QDebug>
#include "QtWidgetsApplication5.h"

MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
{
	//this->setMouseTracking(true); 不加也行
	textEdit = new QTextEdit;
	setCentralWidget(textEdit);

	textEdit->setAcceptDrops(false); 
	setAcceptDrops(true);

	setWindowTitle(tr("Text Editor"));
}

MainWindow::~MainWindow()
{

}

void MainWindow::dragEnterEvent(QDragEnterEvent* e)
{
	qDebug() << "dragEnterEvent" << e->mimeData();
	e->accept();
	if (e->mimeData()->hasFormat("text/uri-list"))
		e->acceptProposedAction(); 
}

void MainWindow::dragLeaveEvent(QDragLeaveEvent* e)
{
	qDebug() << "dragLeaveEvent";
	//e->accept();  不加也行
}

void MainWindow::dragMoveEvent(QDragMoveEvent* event)
{
	event->setDropAction(Qt::MoveAction);
	//event->accept(); 不加也行
}

void MainWindow::dropEvent(QDropEvent* e) //释放对方时,执行的操作
{
	//e->accept(); 不加也行
	QList<QUrl> urls = e->mimeData()->urls();
	if (urls.isEmpty())
		return;

	QString fileName = urls.first().toLocalFile();

	foreach(QUrl u, urls) {
		qDebug() << u.toString();
	}
	qDebug() << urls.size();

	if (fileName.isEmpty())
		return;

	if (readFile(fileName))
		setWindowTitle(tr("%1 - %2").arg(fileName).arg("Drag File"));
}

bool MainWindow::readFile(const QString& fileName) //读文件
{
	QFile file(fileName);
	if (!file.open(QFile::ReadOnly | QFile::Text))
		return false;

	QByteArray data;
	data = file.readAll();
	textEdit->setText(QString::fromLocal8Bit(data));
	return true;
}
#include "QtWidgetsApplication5.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法金 | 再见,PCA 主成分分析!

​大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 1. 概念&#xff1a;数据降维的数学方法 定义 主成分分析&#xff08;PCA&#xff09;是一种统计方法&#xff0c;通过正交变换将一组可…

大模型卷出新高度|暴雨AI服务器M8878助解算力之困

当今世界&#xff0c;作为新一轮科技革命和产业革命的重要驱动力&#xff0c;AI已经成为“兵家必争之地”。我国也在政府报告中首次将“人工智能”行动纳入国家战略&#xff0c;开启了以人工智能为核心的数字经济高质量发展的新时代。 当今世界&#xff0c;作为新一轮科技革命…

超越传统AI 新型多智能体系统MESA,探索效率大幅提升

探索多智能体强化学习的协同元探索 —— MESA 算法深度解读在多智能体强化学习&#xff08;MARL&#xff09;的征途中&#xff0c;如何高效探索以发现最优策略一直是研究者们面临的挑战。特别是在稀疏奖励的环境中&#xff0c;这一问题变得更加棘手。《MESA: Cooperative Meta-…

计算机基础(5)——进制与进制转换

&#x1f497;计算机基础系列文章&#x1f497; &#x1f449;&#x1f340;计算机基础&#xff08;1&#xff09;——计算机的发展史&#x1f340;&#x1f449;&#x1f340;计算机基础&#xff08;2&#xff09;——冯诺依曼体系结构&#x1f340;&#x1f449;&#x1f34…

群体优化算法---灰狼优化算法学习介绍以及在卷积神经网络训练上的应用

**长文预警**介绍 在自然界中&#xff0c;狼群的社会结构和捕猎策略展现了高度的智能和协调性&#xff0c;灰狼优化算法&#xff08;Grey Wolf Optimizer, GWO&#xff09;正是受此启发提出的一种群体智能优化算法。GWO主要模拟了灰狼的社会等级制度和捕猎行为&#xff0c;其核…

WLAN基础-WLAN安全

目录 一、引言二、WLAN安全威胁三、WLAN安全防御机制四、WLAN常用接入认证方式五、总结 一、引言 随着无线网络的广泛应用&#xff0c;WLAN&#xff08;无线局域网&#xff09;因其灵活性和便利性成为越来越多用户和企业首选的接入方式。然而&#xff0c;由于无线通信开放的传…

R语言探索与分析17-CPI的分析和研究

一、选题背景 CPI&#xff08;居民消费价格指数&#xff09;作为一个重要的宏观经济指标&#xff0c;扮演着评估通货膨胀和居民生活水平的关键角色。在湖北省这个经济活跃的地区&#xff0c;CPI的波动对于居民生活、企业经营以及政府宏观经济政策制定都具有重要的影响。因此&a…

ProtoSprite: Rapid 2D Art

✨ 概述 直接在场景视图中的场景上下文中快速创建、绘制和编辑精灵。以最小的摩擦和紧密的Unity集成快速制作2D艺术。 直接编辑PNG纹理文件,与其他软件广泛兼容。无需担心自定义文件格式或额外的组件。无缝集成到您的项目中,不会造成不必要的混乱。 增强您的二维艺术工作流程…

如何规避亚马逊测评的风险?

国外的真实刷手和服务商的账号风险主要是表现在以下几点&#xff1a; 1. 账号资源的重复利用&#xff0c;下单的产品上一秒高端品牌&#xff0c;下一秒地摊货&#xff0c;对账号的标签定位不清晰 2. 留Review的时间周期长 3. 账号的质量会参差不齐&#xff0c;有的上不了评价…

AI 正在攻克难题——赋予计算机嗅觉

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

python中如何使用密码字典

使用itertools循环迭代的模块来实现生成密码字典&#xff0c;用这个模块可以省不少事。 首先要调用itertools。 import itertools as its 然后将字典需要的元素&#xff08;或者说是关键字&#xff09;赋给word变量。 我们这里假设密码是纯数字&#xff0c;所以元素就是12345…

贷款行业新宠:短信群发营销的高效应用

在贷款行业的激烈竞争中&#xff0c;短信群发营销凭借其高效、精准的特性逐渐崭露头角&#xff0c;成为行业新宠。 一、个性化信息&#xff0c;直达目标客户 通过短信群发&#xff0c;贷款机构能够精准地向目标客户推送个性化的贷款产品推荐。基于客户的信用状况、贷款需求等…

嘉立创EDA隐藏铺铜

在设计PCB时&#xff0c;如果在铺铜后进行部分线路的修改、调试与检查&#xff0c;会比较困难。如果对铺铜进行隐藏后&#xff0c;可极大的方便观察与设计。 嘉立创EDA隐藏铺铜方法如下&#xff1a; 1、打开左侧的过滤选项&#xff0c;在轮廓对象下&#xff0c;关闭铺铜区域选…

LabVIEW储油罐监控系统

LabVIEW储油罐监控系统 介绍了基于LabVIEW的储油罐监控系统的设计与实施。系统通过集成传感器技术和虚拟仪器技术&#xff0c;实现对储油罐内液位和温度的实时监控&#xff0c;提高了油罐监管的数字化和智能化水平&#xff0c;有效增强了油库安全管理的能力。 项目背景 随着…

云原生下的数据协调艺术:etcd存储系统解析

目录 一、分布式存储简介 二、etcd介绍 三、etcd架构 四、etcd集成实践 一、分布式存储简介 随着云原生与容器化技术的兴起&#xff0c;分布式系统的复杂性大大增加。分布式系统面临一系列问题&#xff0c;比如部署复杂、响应时间慢、运维复杂等&#xff0c;其中最根本的问…

1790java网络学习平台Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java网络学习平台系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了java设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

17、Spring系列-SpringMVC-请求源码流程

前言 Spring官网的MVC模块介绍&#xff1a; Spring Web MVC是基于Servlet API构建的原始Web框架&#xff0c;从一开始就已包含在Spring框架中。正式名称“ Spring Web MVC”来自其源模块的名称&#xff08;spring-webmvc&#xff09;&#xff0c;但它通常被称为“ Spring MVC…

规则引擎-Easy rule

规则引擎-Easy rule 最近有几个项目中都出现了根据XX条件执行XX方法的业务&#xff0c;在动手之前脑中总会下意识的发现如果按照常规的去写代码&#xff0c;无论使用何种设计模式&#xff0c;都会出现不同程度上的代码冗余或大量if-else判断。 甚至说判断XX条件的代码和执行X…

ubuntu20.04中设置包含ros节点的文件自启动

若文件里包含了ros话题的发布和接收&#xff0c;那么设置自启动时&#xff0c;应该首先将roscore设置为自启动。 首先确保roscore有一个systemd服务文件。如果还没有&#xff0c;需要在/etc/systemd/system/下创建一个。例如&#xff0c;一个基本的roscore.service文件可能如下…

IO进程线程(六)进程

文章目录 一、进程状态&#xff08;二&#xff09;进程状态切换实例1. 实例1 二、进程的创建&#xff08;一&#xff09;原理&#xff08;二&#xff09;fork函数--创建进程1. 定义2. 不关注返回值3. 关注返回值 &#xff08;三&#xff09; 父子进程的执行顺序&#xff08;四&…