Qt之拖放程序
来源:互联网 发布:保障网络和信息安全 编辑:程序博客网 时间:2024/06/05 18:22
拖放是应用程序内或者多个应用程序之间传递信息的一种直观的操作方式。除了为剪贴板提供支持之外,通常还提供数据的移动和复制功能。 拖放操作包括两个截然不同的动作:拖动、放下。Qt窗口部件可以作为拖动点(drag site)、放下点(drop site)或者同时作为拖动点和放下点。 下面介绍如何让一个Qt应用程序接收一个拖动操作,当用户从桌面或者文件资源管理器中拖动一个文件到这个应用程序上放下时,该应用程序就会将文件的信息显示出来。 以上通过自定义QTableView来实现拖放事件,首先需要设置setAcceptDrops(true)来接受放下事件,通过设置setDropIndicatorShown(true)则可以清晰地看到放下过程中的图标指示。然后实现dragEnterEvent()、dropEvent()方法,当用户把一个对象拖动到这个窗体上时,就会调用dragEnterEvent(),如果对这个事件调用acceptProposedAction(),就表明可以在这个窗体上拖放对象。默认情况下窗口部件是不接受拖动的。Qt会自动改变光标向用户说明这个窗口部件不是有效的放下点。 我们希望用户拖放的只能是文件,而非其他类型的东西。为了实现这一点,可以检查拖动的MIME类型。MIME类型中text/uri-list用于存储统一资源标识符(URI),它们可以是文件名、统一资源定位器(URL,如:HTTP、FTP路径)或者其它全局资源标识符。标准的MIME类型由国际因特网地址分配委员会(IANA)定义的,它们由类型、子类型信息以及分割两者的斜线组成。MIME类通常由剪贴板和拖放系统使用,以识别不同类型的数据。可以从下面的网址得到正式的MIME类型列表:Media Types。 当用户在窗口部件上放下一个对象时,就会调用dropEvent()。我们调用函数QMimeData::urls()来获得QUrl列表。通常,用户一次只拖动一个选择区域来同时拖动多个文件也是可能的,如果要拖放的URL不止一个,或者要拖放的URL不是一个本地文件名,则会立即返回到原调用处。 QWidget也提供了dragMoveEvent()和dragLeveEvent()函数,但是绝大多数情况下并不需要重新实现,上面简单实现了dragMoveEvent()函数。
效果如下:
阅读全文
0 0
- Qt之拖放程序
- Qt之拖放
- Qt之拖放
- Qt拖放
- Qt拖放
- Qt 拖放
- Qt拖放
- Qt 拖放
- win7 调试MFC程序之拖放文件
- Qt学习之路(53): 拖放技术之二
- Qt学习之路(53): 拖放技术之二
- Qt学习之路(53): 拖放技术之二
- Qt学习之路(53): 拖放技术之二
- Qt学习之路(53): 拖放技术之二
- Qt学习之路(52): 拖放技术之一
- Qt学习之路(54): 自定义拖放数据对象
- Qt学习之路(52): 拖放技术之一
- Qt学习之路(52): 拖放技术之一
- nginx 基本配置
- Nginx安装及nginx+php环境的搭建
- Generic Access Profile (GAP)
- shell 使用用户名,秘钥登录到linux
- 作品集整理参考文档
- Qt之拖放程序
- 15. 图--拓扑排序
- 23种设计模式之——模板方法模式
- 《Java多线程编程核心技术》笔记
- UNIX编程专题-描述符集介绍和相关操作
- Java问题排查工具箱
- 操作系统之线程
- golang 环境安装与hello world
- 启动Tomcat提示:指定的服务未安装