首页 > 其他分享 >Qt拖拽功能

Qt拖拽功能

时间:2023-05-29 19:24:20浏览次数:39  
标签:功能 Qt 拖拽 ui urls ev true event 拖放

Qt拖拽功能

窗口拖拽文件读取文件路径+文件名

void MainWindow::dragEnterEvent(QDragEnterEvent *ev)
{
    if(ev->mimeData()->hasUrls())
    {
        ev->accept();//接收拖动进入事件
    }
    //ev->ignore();//若忽略该事件,则不会发生之后的事件,拖放到此结束
}

void MainWindow::dropEvent(QDropEvent *ev)
{
    QList<QUrl> urls = ev->mimeData()->urls();
    ui->lineEdit_source->setText(urls[0].toLocalFile());
    ui->lineEdit_target->setText(urls[0].toLocalFile());
    //if(ev->mimeData()->hasUrls())
    //{
        //QList<QUrl> urls = ev->mimeData()->urls();
       // ui->lineEdit_source->text() = urls.at(0).toLocalFile();
       // ui->lineEdit_target->text() = urls.at(1).toLocalFile();
        //for(int i=0; i<urls.size(); i++)
        //{

        //}

    //}
}

调试过程信号槽函数

ui->label->setAcceptDrops(true);

拖拽到指定控件获得路径+文件名

https://www.pianshen.com/article/872738975/

bool eventFilter(QObject *watched, QEvent *event);
//drag file
    ui->pushButton->installEventFilter(this);
    ui->pushButton->setAcceptDrops(true);
    ui->pushButton_2->installEventFilter(this);
    ui->pushButton_2->setAcceptDrops(true);
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
    if (watched == ui->pushButton)
    {
        if (event->type() == QEvent::DragEnter) {
            // [[2]]: 当拖放时鼠标进入label时, label接受拖放的动作
            QDragEnterEvent *dee = dynamic_cast<QDragEnterEvent *>(event);
            dee->acceptProposedAction();
            return true;

        } else if (event->type() == QEvent::Drop)
        {


            QDropEvent *de = dynamic_cast<QDropEvent *>(event);
            QList<QUrl> urls = de->mimeData()->urls();
            if (urls.isEmpty()) { return true; }
            ui->lineEdit_source->setText( urls.first().toLocalFile());;
        }

    } else if (watched == ui->pushButton_2)
    {
        if (event->type() == QEvent::DragEnter)
        {
            // [[2]]: 当拖放时鼠标进入label时, label接受拖放的动作
            QDragEnterEvent *dee = dynamic_cast<QDragEnterEvent *>(event);
            dee->acceptProposedAction();
            return true;

        } else if (event->type() == QEvent::Drop)
        {
            // [[3]]: 当放操作发生后, 取得拖放的数据
            QDropEvent *de = dynamic_cast<QDropEvent *>(event);
            QList<QUrl> urls = de->mimeData()->urls();
            if (urls.isEmpty()) { return true; }
            ui->lineEdit_target->setText( urls.first().toLocalFile());



        }

    }
            return QMainWindow::eventFilter(watched, event);
 }

标签:功能,Qt,拖拽,ui,urls,ev,true,event,拖放
From: https://www.cnblogs.com/timapi/p/17441408.html

相关文章

  • AI2023更新了,最新illustrator 2023新功能
    AI2023更新了,最新illustrator2023新功能有哪些呢?体验从Web和移动图形到徽标、图标、插图、包装设计和广告牌的一切。享受Illustrator的创作自由。Illustrator2023是一款矢量设计应用程序,可让您创建用于大幅面打印(例如广告牌)的数字图形或图像,无论在何处使用,它们看起来都清晰......
  • 转载-奇小葩- 深入ftrace uprobe原理和功能介绍
    原文链接:https://blog.csdn.net/u012489236/article/details/127954817 上一章我们学习了,kprobe可以实现动态内核的注入,基于中断的方法在任意指令中插入追踪代码,并且通过pre_handler/post_handler去接收回调。另一个kprobe的同族是kretprobe,只不过是针对函数级别的内核......
  • EasyCVR视频融合平台设备分组共享功能的使用介绍
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,可支持多协议、多类型的设备接入,并能对设备进行分级、分组管理,并支持权限、角色分配,属于功能全面、性能稳定、高可靠、高可用的流媒体视频云服务平台。很多用户都使用过平台......
  • 租赁小程序|人车网租赁系统|电动车租赁系统包含哪些功能?
    随着科技不断完善,租赁行业的发展也越来越好,电动车也开始进行线上推广租赁,不仅可以让人们更加方便的租用电动车,还让商家可以通过线上模式带动线下的经营,不同于传统的汽车租赁,用户只要打开手机就可以进行车辆租赁,那么电动车租赁小程序有哪些功能呢?租赁小程序功能:1、马上用车:快速查询......
  • Qt实现两个窗口之间信号发送与接收
    主要使用了信号与槽的相关实现方法目录1、实现过程2、运行效果1、实现过程1、新建一个Widget,然后再建一个QMainWindow。2、在mainwindow.h头文件中自定义信号,声明的时候要用signals关键字,在public、private和protect等限定符,因为信号默认是public函数。3、在mianwindow.ui中添......
  • Qt键盘事件和鼠标事件的简单案例实现
    事件:事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的统称。Qt中使用一个对象来表示一个事件,继承自QEvent类。注意:事件与信号并不相同,事件与信号是两个不同层面的东西,发出者不同,作用也不同。案例要实现的功能:通过设置键盘的快捷键来切换另一个窗口通过......
  • 功能测试面试没人要了!软件自动化测试如何入门?
    对于我来说,我做的是web端的测试,做测试也有好几个年头了,每次都是使用手工测试的话,一直是做重复性的工作,既枯燥又繁琐,所以我在两年前自己使用java语言写了一系列的自动化测试脚本,利用的框架是java+testng+reportng+selenium,这个框架在项目中基本可用了。不过最近由于公司项目发生变......
  • 【2023 · CANN训练营第一季】基于Atlas 200I DK A2的智能小车功能实现
    基于Atlas200IDKA2的智能小车功能实现一、地图绘制小车的行驶依赖于模型的训练,因此需要设计一张地图,用于小车行驶的模型训练过程和推理结果验证。开发者可以根据需要使用PhotoShop软件绘制不同的图层,使用可以使小车正常转弯和停车的尺寸,得到场景地图并打印。二、手动控制小车烧......
  • Visual Studio 2022的一个惊艳新功能开发隧道
    在visualstudio开发H5网站的调试时候,需要在多环境调试,比如在不同浏览器和不同分辨率的电脑、不同的手机浏览器测试。或者项目比较着急,需要边测试边开发,可不可以不发布让测试人员来测试呢?visualstudio2022在17.5版本推出了开发隧道(DevTunnels)的功能,就是可以解决这个问题。开发......
  • 直播源码技术屏幕共享功能
     随着科技的发展,直播也在迅速的发展,不管是在学校还是娱乐中,直播都可以为我们提供帮助。那大家有没有这样的一个问题,就是如果我是一位老师,在教室里用手机直播讲课,但我想将我的直播课在身后的大屏幕上也显示出来,又或是,我在家里用手机去看直播,但我感觉用手机看不过瘾想让他在电视上......