欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

QT学习---使用拖拽打开文本文件

程序员文章站 2024-02-23 14:15:28
...
#include "add.h"
#include <QDebug>
#include <QDragEnterEvent>
#include <QUrl>
#include <QFile>
#include <QTextStream>
#include <QMimeData>
#pragma execution_character_set("utf-8");

add::add(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	setAcceptDrops(true);
}

void add::dragEnterEvent(QDragEnterEvent * event) //拖动进入事件
{
	if (event->mimeData()->hasUrls())  //数据中心是否包含URL
	{
		event->acceptProposedAction(); //如果是,接收
	}
	else
	{
		event->ignore();               //否则忽略
	}
	
}

void add::dropEvent(QDropEvent * event)                 //放下事件
{
	const QMimeData * mimeData = event->mimeData();     //获取MIME数据
	if (mimeData->hasUrls())                            //如果数据中有URL
	{
		QList <QUrl> urlList = mimeData->urls();          //获取url列表
		QString filename = urlList.at(0).toLocalFile();  //第一个url表示为本地文件路径
		if (!filename.isEmpty())
		{
			QFile file(filename);                       //建立QFile对象,只读方式打开
			if (!file.open(QIODevice::ReadOnly)) return;
			QTextStream in(&file);                      //建立文本流对象
			ui.textEdit->setText(in.readAll());           //将文件中所有内容读入编译器
		}
	}
}

 

相关标签: c++ QT学习