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