本文共 1555 字,大约阅读时间需要 5 分钟。
QMimeData类提为数据提供一个容器,用来记录关于MIME类型数据的信息 QMimeData常用来描述保存在剪切板里信息,或者拖拽原理 QMimeData对象把它所保存的信息和正确的MIME类型连接起来来保证信息可以被安全的在应用程序之间转移,或者在同一个应用程序之间拷贝 QMimeData对象通产雇佣new来创建,并且支持QDrag和QClipboard对象,这可以使QT管理他们所使用的内存
单一的QMimeData对象可以同时用好几种不同的格式来存储同一个数据,formats()函数返回可以用的数据
格式的list,data()函数可以返回和MIME类型相连的数据类型,setData()用来为MIME类型设置数据
Tester | Getter | Setter | MIME Types |
() | () | () | text/plain |
() | () | () | text/html |
() | () | () | text/uri-list |
() | () | () | image/ * |
() | () | () | application/x-color |
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()) { ... } }}
1.Custom data can be stored directly in a object as a using(). For example:
QByteArray csvData = ...;QMimeData *mimeData = new QMimeData;mimeData->setData("text/csv", csvData);2.We can subclass QMimeData and reimplement hasFormat(), formats(), and retrieveData().
void MyWidget::dropEvent(QDropEvent *event){ const MyMimeData *myData = qobject_cast(event->mimeData()); if (myData) { // access myData's data directly (not through QMimeData's API) }}
转载地址:http://rtqxi.baihongyu.com/