http://blog.csdn.net/xie376450483/article/details/5863810

QMimeData类提为数据提供一个容器,用来记录关于MIME类型数据的信息

QMimeData常用来描述保存在剪切板里信息,或者拖拽原理

QMimeData对象把它所保存的信息和正确的MIME类型连接起来来保证信息可以被安全的在应用程序之间转移

,或者在同一个应用程序之间拷贝

QMimeData对象通产雇佣new来创建,并且支持QDrag和QClipboard对象,这可以使QT管理他们所使用的内存

单一的QMimeData对象可以同时用好几种不同的格式来存储同一个数据,formats()函数返回可以用的数据

格式的list,data()函数可以返回和MIME类型相连的数据类型,setData()用来为MIME类型设置数据

对于大多数MIME类型,QMimeData提供方便的函数来获取数据

例如,如果想让一个widget接受URL拖拽,可以使用下面的代码

 void MyWidget::dragEnterEvent(QDragEnterEvent *event)

 {

     if (event->mimeData()->hasUrls())

         event->acceptProposedAction();

 }

void MyWidget::dropEvent(QDropEvent *event)

 {

     if (event->mimeData()->hasUrls()) {

         foreach (QUrl url, event->mimeData()->urls()) {

             ...

         }

     }

 }

有三种方法在QMimeData对象中来存储通常的数据

1、通常的数据可以象QByteArray()使用setData()直接存储在一个QMimeData对象中,例如

QByteArray csvData = ...;

 QMimeData *mimeData = new QMimeData;

 mimeData->setData("text/csv", csvData);

2、我们可以派生QMimeData类,继承hasFormat(),formats(),retrieveData()函数

3、如果拖拽行为发生在一个应用程序中,我们可以派生QMimeData类,并且为他添加额外的数据,

使用qobject_cast()在接受拖拽函数中,例如

  void MyWidget::dropEvent(QDropEvent *event)

     {

 const MyMimeData *myData=

          qobject_cast<const MyMimeData *>(event->mimeData());

      if (myData) {

          // access myData's data directly (not through QMimeData's API)

     }

详细例程看

http://blog.csdn.net/xie376450483/archive/2010/08/25/5838892.aspx

http://blog.csdn.net/xie376450483/archive/2010/08/26/5839058.aspx

最新文章

  1. MVC第二天
  2. JSP 新闻发布会
  3. JavaScript知识总结&lt;一&gt;
  4. ubuntu 安装 axel
  5. 深入理解javascript作用域系列第四篇——块作用域
  6. Win10外包公司——长年承接Win10App外包、Win10通用应用外包
  7. HDU 1542 线段树+扫描线+离散化
  8. HDU 1869 六度分离
  9. GitHub之创建
  10. (转)Android Support Percent百分比布局
  11. openvpn文本验证模式配置
  12. Codeforces 328A-IQ Test(数列)
  13. 简单实现计算Edit Distance算法
  14. Apache反向代理的配置
  15. About The Order of The Declarations And Definition When Making a Member Function a Friend.关于使类成员成为另一个类友元函数的声明顺序和定义。
  16. springBoot和c3p0的整合
  17. 清流,获取点击的img路径
  18. varchar2长度的意义
  19. 补充:MySQL经典45道题型
  20. lfs(systemv版本)学习笔记-第2页

热门文章

  1. 整理前端css/js/jq常见问题及解决方法(3)
  2. window 注册表上下文菜单如何配置?
  3. 我的Android进阶之旅------>Android横竖屏切换总结
  4. tomcat 的 Pipeline 机制
  5. if控制器+循环控制器+计数器,控制接口分支
  6. 1、Python request(爬虫-百度翻译)
  7. centos7 安装python3.6
  8. 20170523 BSEG替代付款条件-ZTERM 天数-ZBD1T
  9. oracle修改连接数后无法启动(信号量的问题)
  10. 中间件 WSGI