1

我从QListWidgetItem. 我可以在这个拖动对象中将文本作为 mime 数据发送。

如何发送像素图并从 mime 数据中检索它?甚至可以创建QGraphicsItem并检索它吗?

我尝试从 拖放QListWidgetQGraphicsView.

4

1 回答 1

5

有多种方法可以发送QPixmapthrough QMimeData

  1. 通过将其编码为诸如 PNG 之类的文件格式并使用 mime-type 发送image/pngQMimeData对此具有内置支持,参见QMimeData::imageData())。
  2. 通过使用 a将其序列QPixmap化为a并在特定于应用程序的 mime-type 下发送序列化。QByteArrayQDataStreamapplication/x-app-name
  3. 通过将图像数据写入磁盘上的文件并使用 mime-type 发送文件 URL text/uri-listQMimeData对此具有内置支持,参见QMimeData::urls())。这允许将这些图像拖到文件管理器或桌面上。
  4. 与上面的 (2) 类似,您还可以创建 a QGraphicsItem,将其地址填充到 aQByteArray中,然后在特定于应用程序的 mime 类型下发送。当然,如果拖动在另一个进程中结束,这将不起作用(接收站点可​​以测试,因为在这种情况下QDragEvent::source()返回0),并且需要特别注意处理图形项的生命周期。

鉴于QMimeData允许您一次传递多种格式,这些选项是非排他性的。但是,您应该对从重新实现返回的格式进行排序,QMimeData::formats()以降低特异性,即您的应用程序私有格式排在第一位,最后排text/uri-list在最后。

于 2012-06-20T21:43:39.707 回答