Qt 40 拖放事件深度剖析

Qt的容器类——QList 定义:QList < T > 以数组列表形式实现,在其前后添加数组非常快。 注意Qt中有很多函数返回了QList类型,要遍历这些返回的容器,必须先复制再遍历。因为Qt使用了隐式复制,所以开销并不大。当一个迭代器在操作一个容器时,不要复制这个容器。 1. 初始化 QList<QString> list; //定义QList,存储数据类型为QString 2. 插入 ... 阅读详情

学习自唐佐林老师Qt


在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
实验1:通过重写拖放操作的事件处理函数,得到所拖放的文件或者文件夹的路径

Widget.h

#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui/QWidget>
class Widget : public QWidget
{
    Q_OBJECT
protected:
    //重写事件处理函数
    void dragEnterEvent(QDragEnterEvent* e);//拖
    void dropEvent(QDropEvent* e);//放
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};
#endif // WIDGET_H

Widget.cpp

#include "Widget.h"
#include <QDragEnterEvent>
#include <QDropEvent>
#include <QDebug>
#include <QList>//链表类
#include <QUrl>
Widget::Widget(QWidget *parent) : QWidget(parent)
{
    //表明当前对象可以接受拖放事件
    setAcceptDrops(true);
}
//拖事件
void Widget::dragEnterEvent(QDragEnterEvent* e)
{
    //判断多媒体数据类型 是不是我们期望的:路径
    if( e->mimeData()->hasUrls() )
    {
        //接受
        e->acceptProposedAction();
    }
    else//不是的话 我们不做操作,直接交给父组件对象处理
    {
        e->ignore();
    }
}
//放事件
void Widget::dropEvent(QDropEvent* e)
{
    //判断多媒体数据类型 是不是我们期望的:路径
    if( e->mimeData()->hasUrls() )
    {
        //取出路径
        QList<QUrl> list = e->mimeData()->urls();
        //打印路径
        for(int i=0; i<list.count(); i++)
        {
            //list[i].toLocalFile() 将当前urls(文件路径) 转化成本地路径
            qDebug() << list[i].toLocalFile();
        }
    }
    else
    {
        e->ignore();
    }
}
Widget::~Widget()
{
    
}

main.cpp

#include <QtGui/QApplication>
#include "Widget.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    
    return a.exec();
}

在这里插入图片描述在这里插入图片描述

三、Qt常用容器之QList 1、QList介绍 介绍个锤子,有点累,摊牌了,这篇是水的,但是我觉得质量很高,因为我自己写不了这么详细,对,感谢某不知名网站编程指南,我直接白嫖,这篇实在是太多了,说句实话日常使用不久存个指针,然后遍历查找之类的,怎么能写这么多! 在开始讲解 QList 之前,我们先明确一下 Qt 数据容器能存储什么,不能存储什么。 Qt 提供的数据容器都是模板类,构造时要带数据类型,比如下面这句定义整型数列表: QList<int> integerList; Qt 数据容器有支持的数据类型,也有不支持的类型 阅读详情

相关推荐

Qt 编程 —— 文件对话框(QFileDialog)的使用 【学习笔记】

QFileDialog类是 Qt 提供的一个用于指定操作文件的对话框小部件。

Aliven888的博客 1万+

Qt开发-拖放事件深度剖析

(4)、最后通过路径来打开的方式都一样(所以调用相同的函数),所以说区别就是在(2)、(3)(1)、对接收拖放事件的对象调用setAcceptDrops成员函数。(1)、打开和拖放都需要先判断是否有数据未保存(所以调用相同的函数)(3)、重写dragEvent()函数并判断MIME类型后打开文件。(2)、重写dragEnterEvent函数并判断MIME类型。(2)、重写dragEnterEvent函数并判断MIME类型。(3)、重写dragEvent()函数并判断MIME类型。

hw5230的博客 405

Qt--实现拖拽文件

一、效果展示 二、具体代码 实现文件拖拽到窗体主要是重写: void dragEnterEvent(QDragEnterEvent*event) Q_DECL_OVERRIDE; //文件拖拽到窗体内,触发 void dropEvent(QDropEvent *event) Q_DECL_OVERRIDE; //文件拖拽到窗体内,释放,触发 #ifndef DRAGFILE_H #define DRAGFILE_H #include <QWidget> #include <QDeb

贝勒里恩的博客 4391

Qt常用容器之:QList

在开始讲解 QList 之前,我们先明确一下 Qt 数据容器能存储什么,不能存储什么。Qt 提供的数据容器都是模板类,构造时要带数据类型,比如下面这句定义整型数列表:Qt 数据容器有支持的数据类型,也有不支持的类型,不仅是 QList ,其他数据容器都有不支持的数据类型。存储在 Qt 数据容器里面的数据,必须是可赋值类型!比如 C++ 基本数据类型,int、double、指针等可以存储在 Qt 数据容器里;

zxf347085420的博客 3504

基于深度强化学习的无地图移动机器人导航:让机器人在未知环境中智能前行

虽然仍然面临sim-to-real差距、安全性保证等挑战,但随着算法的不断改进和计算能力的提升,基于DRL的无地图导航技术将在服务机器人、工业自动化、太空探索等领域发挥越来越重要的作用,为人类生产和生活带来更大便利和价值。对于复杂环境下的动态目标导航问题,研究人员提出了多智能体协同控制算法(如Teamwork-Net算法),通过多个智能体分别控制机器人的运动速度与运动方向,协同实现更高效、更稳定的导航性能。深度强化学习结合了深度学习的感知能力和强化学习的决策能力,非常适合解决无地图导航问题。

weixin_45131592的博客 902

5G物理层基础知识

1、关于RB和RE (1) RB(Resource Block,资源块)频率上连续12个子载波,时域上一个slot(时隙,14个ofdm符号) (2) RE(Resource Element,资源单元)频率上一个子载波,及时域上一个ofdm符号 注意:协议规定,5G每个时隙(非扩展CP)的符号数为14个(扩展CP情况下每个时隙有12个符号),而LTE(非扩展CP)每个时隙的符号数为7个。 简单说:一个12X14的方格,大的整个叫一个RB,每一个小块叫一个RE。另外,一个RE可存放一个调制符号(mo.

qq_39074243的博客 2万+

QT学习笔记

/#include //qlabel 版本不一样//Widget w;w.show();/**//*label也可以是窗体QLabel l;l.show();*/

qq_35429166的博客 1698

【FOC无刷电机控制】六步换向、FOC,STM32cubemx从零开始搭建BLDC六步换相代码、FOC代码(基于霍尔传感器)

FOC、六步换相,无刷电机控制

xifan的博客 3万+

第0-0课 - QT实验分析教程引言

QT实验分析教程目录: 第0课 - 开发环境搭建 第1课 - GUI 程序原理分析 第2课 - GUI 程序实例分析 第3课 - QT 的诞生和本质 第4课 - Hello QT 第5课 - Qt Creator工程介绍 第6课 - 窗口部件及窗口类型 第7课 - Qt 中的坐标系统 第8课 - 启航!第一个应用实例 第9课 - 计算器界面代码重构 第10课 - 初探 Qt 中的消息处理 第11...

梦心之魂的博客 96

黑群晖二合一已损毁_手动修复黑群晖已损毁磁盘空间

lz的用法是这样的,一个中古级mac mini 2011上装有vmware esxi 7.6, 然后上面挂载了lz的华芸Asustor Nas的iscsi空间,lz用的是basic volume,然后esxi上面有虚拟的黑群晖6.2.2-24922,黑群晖的docker里跑着不可描述软件,但是发现下载速度过快时,比如有好几个文件同时下载,总速度超过60MB/s以后storage manager里很...

weixin_39669629的博客 1万+

【AUTOSAR-DCM】-3.1-将CDD导入CFG并查看$22服务配置变化(UDS诊断DID带一个Data)

案例背景:(共8页精讲) 在《【UDS诊断描述文件CDD】-3.2-编辑CDD给$22服务创建一个带一个Data的DID(dataIdentifier)数据标识符》中,适应使用CANdela Studio在CDD中创建一个带一个Data的DID(dataIdentifier)数据标识符,见图0-1。现在我们将该CDD文件导入到CFG(DaVinci Configurator),看看配置会发生哪些变化。 图0-1 目录 1 将诊断描述文件CDD导入CFG(DaVinci Configurator.

「汽车电子助手」的博客 1630

第0-0课 - 引言

课程目录: 第0课 - 开发环境搭建 第1课 - GUI 程序原理分析 第2课 - GUI 程序实例分析 第3课 - QT 的诞生和本质 第4课 - Hello QT 第5课 - Qt Creator工程介绍 第6课 - 窗口部件及窗口类型 第7课 - Qt 中的坐标系统 第8课 - 启航!第一个应用实例 第9课 - 计算器界面代码重构 第10课 - 初探 Qt 中...

weixin_30835933的博客 196

AI算力网络与通信领域QoS保障的测试方法

在当今数字化时代,AI技术蓬勃发展,AI算力网络应运而生。它将分布在不同地理位置的算力资源进行整合,以高效地支持各种AI应用,如深度学习训练、智能图像识别等。而通信领域则是信息传输的基石,确保数据能够准确、快速地在不同节点之间传递。QoS保障在通信领域至关重要,它可以确保不同类型的业务(如语音通话、视频会议、在线游戏等)获得与其需求相匹配的服务质量。在AI算力网络中,QoS保障同样不可或缺,因为AI任务对网络的带宽、延迟、可靠性等指标有严格要求。

AI算力网络与通信的博客 526

Qt之QUrl和QUrlQuery

QUrlQuery 类提供了一种方法来操纵 URL 查询中的 key-value 对。上述的查询字符串在 URL 中 被用来传输选项,通常解码为多个 key-value 对。其列表包含了的两个条目,键为“type”和 “color”。

baidu_16370559的博客 1690

AutoSAR系列讲解(入门篇)4.1-BSW概述

BSW概述,主要讲解BSW的结构组成

雪云飞星的博客 4万+

TBOX电源方案的详细讲解与分析

输入保护电路是确保车载电子系统稳定性的关键。通过合理选择TVS二极管、保险丝和浪涌抑制器等元器件,能够有效防止来自电源系统的瞬态过电压、浪涌和过流问题,保护后续电路免受损害。针对不同的电源环境和应用场景,可以通过提升功率、优化热管理以及选择高效元器件来进一步提高系统的保护能力和可靠性。

weixin_43199439的博客 1075

Qt实现拖拽文件

qt开发教程

m0_73443478的博客 970

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

QT QList<T>介绍与应用、详解、使用说明、官方手册翻译

QT QList<T>介绍与应用、详解、使用说明、官方手册翻译

ken2232的博客 3430

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

QList的用法

QList的用法 QList<VideoWidget *> videoWidget_list; VideoWidget *videoWidget = videoWidget_list.at(i)

weixin_43514545的博客 666

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【QT】QT实现拖放文件并复制文件功能

QT实现拖放文件并复制文件功能 目录 1.添加头文件 2.添加.h文件代码 3.添加.cpp文件代码 复制文件和文件夹 设置鼠标悬浮样式 4.效果 1.添加头文件 #include <QDragEnterEvent> #include <QUrl> #include <QMimeData> #include <QDropEvent&gt...

rong11417的博客 2023

QSet转为QList

QList&lt;quint32&gt; m_IDList; QSet&lt;quint32&gt; m_IDSet; m_IDList = m_IDSet.toList();

giantmfc123 1745

QT QList介绍及应用

QT QList介绍及应用

m0_73443478的博客 1544

Qt 剪贴板历史记录

Qt 剪贴板历史记录,以系统托盘形式运行,记录剪贴板数据变化,保存剪贴板历史记录为文本。 clipboard_history.cpp #include <QApplication> #include <QMenu> #include <QAction> #include <QDateTime> #include <QFile> #include <QTextStream> #include <QClipboard> #

mabing993的博客 1628

QList的简单使用

QList的简单使用 标签: listsuniterator 2009-07-22 21:13 15083人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: Qt(7) 作者同类文章X •安装qt for s60 一些错误 •Qt 获取本机ip地址 •QTextStream 读取文件内容 •Qt简单程

ASKLW的博客 1万+

拖拽相关-DropSite

声明:本系列代码都是QT官方例程。 对于QT拖拽相关函数: void dragEnterEvent(QDragEnterEvent *event); void dragMoveEvent(QDragMoveEvent *event); void dragLeaveEvent(QDragLeaveEvent *event); void dropEvent(QDropEvent *event);...

ZHULINHAIBAO的博客 515

Qt容器:QList

因此,可以预期最大大小为 2 GB 减去 32 位平台上的开销,以及 2^63 字节减去 64 位平台上的开销。可以存储在 QList 中的元素数是此最大大小除以存储元素的大小。但是,如果想要一个在前面插入复杂度为O(1)的容器类,请改用 std::list。返回包含此列表中元素的子列表,从位置 pos 开始。QVector 在 Qt 5 中曾经是一个不同的类,但在Qt6它是 QList 的一个别名。对于大型列表,此操作可能很慢,因为它需要将索引 i 及以上的所有项目在内存中进一步移动一个位置。

hw5230的博客 1109
上一篇: Qt 39 Qt中的事件处理,事件ignore以及事件过滤器
下一篇: 16_网络IPC9-UDP传输简析
Ma浩然
博客等级 码龄9年 1万+粉丝 462原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma浩然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值