【发布时间】:2012-06-20 19:28:10
【问题描述】:
我从QListWidgetItem 创建了一个拖动对象。
我可以在这个拖动对象中将文本作为 mime 数据发送。
如何发送像素图并从 mime 数据中检索它?
甚至可以创建一个QGraphicsItem 并检索它吗?
我尝试从QListWidget 拖放到QGraphicsView。
【问题讨论】:
标签: qt drag-and-drop mime qgraphicsview qlistwidget
我从QListWidgetItem 创建了一个拖动对象。
我可以在这个拖动对象中将文本作为 mime 数据发送。
如何发送像素图并从 mime 数据中检索它?
甚至可以创建一个QGraphicsItem 并检索它吗?
我尝试从QListWidget 拖放到QGraphicsView。
【问题讨论】:
标签: qt drag-and-drop mime qgraphicsview qlistwidget
有多种方法可以通过QMimeData 发送QPixmap:
image/png 发送(QMimeData 对此具有内置支持,参见QMimeData::imageData())。QDataStream 将QPixmap 序列化为QByteArray 并在特定于应用程序的mime 类型application/x-app-name 下发送序列化。text/uri-list 的文件 URL(QMimeData 对此具有内置支持,参见 QMimeData::urls())。这允许将这些图像拖到文件管理器或桌面上。QGraphicsItem,将其地址填充到QByteArray 中,然后在特定于应用程序的mime-type 下发送。当然,如果拖动在另一个进程中结束,这将不起作用(接收站点可以测试,因为在这种情况下QDragEvent::source() 返回0),并且需要特别注意处理图形项的生命周期。QMimeData 允许您一次传递多种格式,这些选项是非排他性的。但是,您应该对从重新实现 QMimeData::formats() 返回的格式进行排序,以降低特异性,即您的应用私有格式排在第一位,text/uri-list 排在最后。
【讨论】: