网站首页 > 基础教程 正文
1.拖放操作分为两个截然不同的动作: 拖动和放下.
拖动通过
void dragEnterEvent(QDragEnterEvent * event);
来实现。
放下通过
void dropEvent(QDropEvent * event);
来实现。
需要注意的一个地方是:
默认情况下,QTextEdit可以接受来自其他应用程序文本的拖动,并且如果用户在它上面拖放下一个文件,它会把这个文件的文件名放到QTextEdit的文本框中.
所以当我们使用拖放的时候,应该先禁用QTextEdit的可拖放.
this->textEdit->setAcceptDrops(false);
this->mainWindow->setAcceptDrops(true);
2.当用户把一个对象拖动到这个指定窗口上时,应付调用dragEnterEvent.如果对这个事件调用acceptProposedAction(),就表明用户可以在这个窗口部件上拖放对象。
默认情况下,窗口部件是不接受拖动的。Qt会自动改变光标来向用户说明这个窗口部件是不是有效的放下点。
void Test::dragEnterEvent(QDragEnterEvent *ev)
{if(ev->mimeData()->hasFormat("text/uri-list"))
ev->acceptProposedAction();
}
这个地方有个问题,首先看下书本上是怎么说的:
MIME类型中的text/uri-list用于存储一系列的统一资源标识符(Universal Resource Identifier,URI),
它们可以是文件名、统一资源定位器(Uniform Resource Locator,URL,如HTTP或者FTP路径),或者其它全局资源标识符。
但是这个地方,并不能使用text/plain来判断txt文件 用image/jpeg来判断图片。
因为通过下面的代码,可以发现jpeg格式的图片返回fromat也是text/uri-list.
qDebug()<<ev->mimeData()->formats();
而且debug显示的也没有image/jpeg
这个是我不能理解的,这也就是说,在dragEnterEvent中只能判断到是不是文件,而不能判断到类型。不知道我的判断是不是正确的。
3.当用户在窗口部件上放下一个对象时,就会调用dropEvent.
void Test::dropEvent(QDropEvent *ev)
{
QList<QUrl> urls = ev->mimeData()->urls();
QString filename = urls.first().toLocalFile();
this->fnames = filename;
this->readFile(fnames);
Qt开发学习路线:Qt开发技术栈
Qt资料领取:Qt资料领取(视频教程+文档+代码+项目实战)
猜你喜欢
- 2025-02-04 CAD20个超级全面的小技巧,非常实用,快快收藏起来吧!(二)
- 2025-02-04 Android 12 第二个开发者预览版,全新主题你喜欢吗?
- 2025-02-04 抓大放小,瞅瞅 Qt 的几个基础模块
- 2025-02-04 40种CAD常见问题解决方法,从此不再求人
- 2025-02-04 掌握这100个CAD实用技巧,效率提高10倍
- 2025-02-04 《速度与激情》经典语录:怎么任性怎么来!
- 2025-02-04 新手必备50个常用cad+天正建筑技巧,零基础入门到精通cad!
- 2025-02-04 PS可不是P图,今天就来讲讲那些英文缩写词
- 2025-02-04 Qt开发-GraphicsView编程(qt 开发)
- 2025-02-04 「10.Delphi数据库编程」12.数据控制组件之DBGrid组件
- 05-162025前端最新面试题之HTML和CSS篇
- 05-16大数据开发基础之HTML基础知识
- 05-16微软专家告诉你Win10 Edge浏览器和EdgeHTML的区别
- 05-16快速免费将网站部署到公网方法(仅支持HTML,CSS,JS)
- 05-16《从零开始学前端:HTML+CSS+JavaScript的黄金三角》
- 05-16一个简单的标准 HTML 设计参考
- 05-16css入门
- 05-16前端-干货分享:更牛逼的CSS管理方法-层(CSS Layers)
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)