当前位置: 首页 > article >正文

QT QLineEdit如何支持文件拖放

在客户算软件中,人们往往可以通过点击按钮的方式来打开文件对话框,从而选择需要的文件,并将其显示在编辑框中,但是也有一些用户喜欢拖拽文件的方式来实现这一目的。那么 QLineEdit 是如何支持文件拖放?详见代码:

#ifndef DRAGDROPLINEEDIT_H
#define DRAGDROPLINEEDIT_H
#include <QLineEdit>
#include <QDragEnterEvent>
#include <QMimeData>
#include <QDropEvent>
#include <QDebug>

class DragDropLineEdit : public QLineEdit {
    Q_OBJECT
public:
    DragDropLineEdit(QWidget *parent = nullptr) : QLineEdit(parent) {
        setAcceptDrops(true);  // 允许接受拖放事件
    }

protected:
    void dragEnterEvent(QDragEnterEvent *event) override
    {
        if (event->mimeData()->hasUrls()) {
            event->acceptProposedAction();
        }
    }

    void dropEvent(QDropEvent *event) override
    {
        const QMimeData *mimeData = event->mimeData();
        if (mimeData->hasUrls())
        {
            QList<QUrl> urlList = mimeData->urls();
            if(0 < urlList.size()){
                QString text = urlList.first().toLocalFile();
                setText(text);  // 设置文本框内容为文件路径或名称
            }
        }
    }
};

#endif // DRAGDROPLINEEDIT_H


http://www.kler.cn/a/551677.html

相关文章:

  • 项目2 数据可视化--- 第十五章 生成数据
  • 【开源免费】基于SpringBoot+Vue.JS个人博客系统(JAVA毕业设计)
  • 在Nodejs中使用kafka(四)消息批量发送,事务
  • Ollama 部署本地 Deepseek-R1 大模型及可视化聊天工具指南
  • springboot399-中文社区交流平台(源码+数据库+纯前后端分离+部署讲解等)
  • mapbox基础,使用geojson加载circle圆点图层
  • 汽车通信未来新趋势:Eclipse uProtocol
  • 无第三方依赖 go 语言工具库
  • 【复现DeepSeek-R1之Open R1实战】系列6:GRPO源码逐行深度解析(上)
  • 深入解析「卡顿帧堆栈」 | UWA GPM 2.0 技术细节与常见问题
  • 25工商管理研究生复试面试问题汇总 工商管理专业知识问题很全! 工商管理复试全流程攻略 工商管理考研复试真题汇总
  • 解决DeepSeek服务器繁忙的有效方法
  • vue3项目,商城系统
  • 网络工程师 (45)网际控制报文协议ICMP
  • 分布式储能监测云平台
  • 麒麟V10离线安装docker和docker-compose
  • 1.王道_常用命令
  • 嵌入式学习第十六天--stdio(二)
  • SQL进阶技巧:如何统计用户跨端消费行为?
  • STM32 HAL库USART串口中断编程:环形缓冲区防止数据丢失