gpt4 book ai didi

Qt:在QDrag 的QMimeData 中发送QPixmap?

转载 作者:行者123 更新时间:2023-12-02 22:38:14 27 4
gpt4 key购买 nike

我从 QListWidgetItem 创建了一个拖动对象。我可以在此拖动对象中将文本作为 MIME 数据发送。

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

我尝试将 QListWidget 拖放到 QGraphicsView 中。

最佳答案

有多种方法可以通过QMimeData发送QPixmap:

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

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

关于Qt:在QDrag 的QMimeData 中发送QPixmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126767/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com