Qt拖放事件与拖放操作笔记dragEnterEvent,dropEvent

news2024/9/25 13:25:59

1 介绍

        拖放事件主要用于处理MIME数据,该数据是用于在发送电子邮件时,附加多媒体数据(即拖拽一个文件放入邮件中,事件文件的上传)。

         

 2 示例

        a)使用简化步骤声明拖放事件成员函数:

 

         b)拖放事件成员函数定义,QWidget构造函数定义:

         widget.cpp:

#include "widget.h"
#include "ui_widget.h"
#include <QMimeData>
#include <QFileInfo>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    setAcceptDrops(true);
    ui->plainTextEdit->setAcceptDrops(false);
    ui->label->setAcceptDrops(false);
    ui->label->setScaledContents(true);

}

Widget::~Widget()
{
    delete ui;
}

void Widget::resizeEvent(QResizeEvent *event)
{
    //这里为实现拖拽图片后的label尺寸自适应变化,采用编码实现size变化
    QSize sz = ui->plainTextEdit->size();
    ui->plainTextEdit->move(5, 5);
    ui->label->move(5, sz.height() + 10);
    ui->plainTextEdit->resize(this->width() - 10, sz.height());  //设置ptEdit的宽度为widget宽度,保留原本高度
    ui->label->resize(this->width() - 10,this->height() - sz.height() - 20);
    event->accept();    //事件完成后的停止机制函数
}

void Widget::dragEnterEvent(QDragEnterEvent *event)
{
    ui->plainTextEdit->clear(); //清空现有内容
    ui->plainTextEdit->appendPlainText("dragEnterEvent事件处理中:");
    for(auto &item:event->mimeData()->formats())
        ui->plainTextEdit->appendPlainText(item);
    for(auto &item:event->mimeData()->urls())
        ui->plainTextEdit->appendPlainText(item.toString());
    if(event->mimeData()->hasUrls())
    {
        QString fileName = event->mimeData()->urls().at(0).fileName();  //获取文件名
        QFileInfo fileInfo(fileName);   //读取文件
        QString ex = fileInfo.suffix().toUpper();   //获取文件后缀
        if(ex=="JPEG")   //通过文件后缀来判断是否接受动作
            event->acceptProposedAction();
        else
            event->ignore();
    }
    else
        event->ignore();
}

void Widget::dropEvent(QDropEvent *event)
{
    //显示图片
    QString filePath = event->mimeData()->urls().at(0).path();  //获取文件名
    filePath = filePath.right(filePath.length() - 1);   //去掉fileName中的‘/’符号
    QPixmap pixMap(filePath);
    ui->label->setPixmap(pixMap);
    event->accept();

}

 

 

 

 

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

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

相关文章

AIDL踩坑记录

1、aidl文件编译不出java文件&#xff1a; 有两种解决方案&#xff1a; 1、利用as新建一个AIDL&#xff0c;aidl文件会在aidl目录的包名下面&#xff0c;as会自己识别 2、如果代码是编写在自己的目录中&#xff0c;可用sourceSets指定aidl目录 sourceSets {main {aidl.srcDi…

Sentieon | 应用教程: 关于读段组的建议

介绍 本文档描述了使用Sentieon Genomics软件时&#xff0c;推荐使用RGID字段以最小化潜在问题的用法。 本文档能帮助您确定设置所使用的bam文件中RG标签的不同字段的最佳实践方法。 RG字段及其用法的详细描述 RG字段的详细描述 SAM格式规范http://samtools.github.io/hts-…

同步辐射全散射PDF测试的原理及应用领域盘点

同步辐射全散射PDF测试的原理及应用领域盘点 同步辐射全散射PDF是一种强大的材料结构表征技术&#xff0c;它通过同步辐射X射线衍射技术&#xff0c;探测材料中原子间的相对位置与偏移&#xff0c;从而揭示材料的微观结构和性质。 同步辐射全散射PDF原理 同步辐射全散射PDF测试…

MAPPO 算法的深度解析与应用和实现

【论文研读】 The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games 说明&#xff1a; 来源&#xff1a;36th Conference on Neural Information Processing Systems (NeurIPS 2022) Track on Datasets and Benchmarks. 是NIPS文章&#xff0c;质量有保障&…

4个方面介绍云渲染技术的发展趋势和前景!

云渲染技术是一种新兴的渲染技术&#xff0c;它利用云计算的优势&#xff0c;将渲染任务分配到云端服务器上进行处理&#xff0c;从而大大提高了渲染效率和质量。云渲染技术在影视动画、建筑设计、游戏开发等领域有广泛的应用&#xff0c;为数字内容创作提供了便捷和高效的解决…

金融科技与现代开源技术结合的进展超前到你无法想象!

想要了解最新的金融科技进展吗&#xff1f; 渴望与其他技术爱好者交流&#xff0c;并扩展您在金融科技行业中的人脉关系吗&#xff1f; 那么请参加我们即将举行的 Meetup&#xff0c;本次活动由 Apache DolphinScheduler 社区和 OceanBase 技术社区共同举办&#xff0c;聚焦金…

为什么都劝年轻人不要频繁跳槽?

"为什么都劝年轻人不要频繁跳槽&#xff1f;"这句话绝对正确&#xff0c;没有任何漏洞&#xff0c;无论如何解释都是正确的&#xff0c;因为“频繁”这个词是非常主观的&#xff0c;有很大的弹性。 不同的人对于跳多少次才算频繁有不同的看法&#xff0c;有人认为一…

二、MySql库的操作

文章目录 一、库的操作&#xff08;一&#xff09;创建数据库&#xff08;二&#xff09;创建数据库案例&#xff08;三&#xff09;字符集和校验规则1、 查看系统默认字符集以及校验规则2、查看数据库支持的字符集3、查看数据库支持的字符集校验规则4、校验规则对数据库的影响…

转转短链平台设计与实现

1 背景介绍 转转是中国领先的二手交易平台&#xff0c;链接作为用户在平台上进行交互和信息传递的重要媒介&#xff0c;扮演着不可或缺的角色。 传统长链接通常包含大量字符和特殊符号&#xff0c;不易记忆和传播。由于字数的原因&#xff0c;长链接在发送短信&#xff0c;生成…

策略模式【Strategy Pattern】

刘备要到江东娶老婆了&#xff0c;走之前诸葛亮给赵云&#xff08;伴郎&#xff09;三个锦囊妙计&#xff0c;说是按天机拆开解决棘手问题&#xff0c; 嘿&#xff0c;还别说&#xff0c;真是解决了大问题&#xff0c;搞到最后是周瑜陪了夫人又折兵呀&#xff0c;那咱们先看看…

Linux 的基本使用

1、Linux 是什么 Linux 是一个操作系统. 和 Windows 是 "并列" 的关系 Linux 严格意义来说只是一个 "操作系统内核". 一个完整的操作系统 操作系统内核 配套的应用程序. CentOS 和 RedHat 的关系 RedHat一直都提供源代码的发行方式&#xff0c;Cent…

【MySQL系列】表约束的学习

「前言」文章内容大致是MySQL的表的约束。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、MySQL表的约束1.1 空属性1.2 默认值&#xff08;default&#xff09;1.3 列描述&#xff08;comment&#xff09;1.4 zerofill1.5 主键&#xff08;primary ke…

新型网络安全:从过程到明确结果

内容 过去的情况网络安全是理论性的&#xff0c;结果才是实际性的。这可能吗&#xff1f;我们现在的努力方向结论 本文讲述了为什么企业必须重新思考其网络安全方法&#xff1a;旧方法是否足够有效&#xff0c;是否可以完全适用&#xff1f;公司应采取哪些行动来实现内部信息…

【Spring Boot】构建RESTful服务 — RESTful简介

RESTful简介 本节将从基础的概念开始介绍什么是RESTful、RESTful的特点、RESTful中的资源、HTTP Method、HTTP Status&#xff0c;还将介绍RESTful和SOAP到底有哪些区别。 1.什么是RESTful RESTful是目前流行的互联网软件服务架构设计风格。REST&#xff08;Representationa…

HCIA---路由器--静态路由

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.路由器简介 路由器是一种网络设备&#xff0c;用于将数据包从一个网络发送到另一个网络…

系统架构设计师-系统可靠性分析与设计

目录 一、可靠性相关基本概念 二、可靠性指标 1、串联系统与并联系统可靠性指标计算 2、混合系统 三、可靠性设计 1、影响软件可靠性的主要因素&#xff1a; 2、增加可靠性的解决方案 2.1 避错技术 2.2 降低复杂度设计 2.3 检错技术 2.4 容错技术 3、双机容错 一、可靠性相关…

当涉及到Python计算结果的责任时,谁来负责呢?

代码质量和测试&#xff1a;在发布之前&#xff0c;通常会进行代码测试以确保基本的错误被避免。对于广泛使用的库和框架&#xff0c;如numpy、scipy和pandas&#xff0c;其代码正确性经过了充分的测试和验证&#xff0c;用户可以放心使用。社区维护和开发者&#xff1a;Python…

自编码器的学习

先奉上视频 https://www.bilibili.com/video/BV1Vx411j78H/?spm_id_from333.788.recommend_more_video.-1&vd_sourceeb433c8780bdd700f49c6fc8e3bd0911

MySQL — MVCC

文章目录 MVCCMVCC 实现原理隐藏字段undo logundo log的用途undo log类型 版本链ReadView MVCC InnoDB是一个多版本的存储引擎。它保留有关已更改行的旧版本的信息&#xff0c;以支持并发和回滚等事务性特性。这些信息存储在undo表空间中的数据结构称为回滚段。InnoDB使用回滚…

三天吃透Java面试八股文(2023最新整理),面试通过率高达90%

什么样的求职者能够获得面试官的青睐&#xff1f;求职者需要准备哪些内容来面对形形色色的面试官&#xff1f;这两份资料是我在几十场面试中被面试官问到的问题&#xff0c;比其他复制粘贴的面试题强一百倍&#xff0c;堪称全网最强&#xff08;我不太喜欢“全网最强”这样的字…