Qt:在QDrag'中发送QPixmap;什么是QMimeData?
我从Qt:在QDrag'中发送QPixmap;什么是QMimeData?,qt,drag-and-drop,mime,qgraphicsview,qlistwidget,Qt,Drag And Drop,Mime,Qgraphicsview,Qlistwidget,我从QListWidgetItem创建了一个拖动对象。 我可以在此拖动对象中将文本作为mime数据发送 如何发送pixmap并从mime数据中检索它? 甚至可以创建一个QGraphicsItem并检索它吗 我尝试将QListWidget拖放到QGraphicsView通过qimedata发送QPixmap有多种方法: 通过将其编码为PNG等文件格式,并使用mime类型发送该文件(QMimeData),参见QMimeData::imageData()) 通过使用QDataStream将QPixma
QListWidgetItem
创建了一个拖动对象。
我可以在此拖动对象中将文本作为mime数据发送
如何发送pixmap并从mime数据中检索它?
甚至可以创建一个QGraphicsItem
并检索它吗
我尝试将
QListWidget
拖放到QGraphicsView
通过qimedata
发送QPixmap
有多种方法:
QMimeData
),参见QMimeData::imageData()
)QDataStream
将QPixmap
序列化为QByteArray
并在特定于应用程序的mime类型应用程序/x-app-name
下发送序列化text/uri list
为其发送文件URL(QMimeData
对此具有内置支持,请参见QMimeData::URL()
)。这允许将这些图像拖到文件管理器或桌面上QGraphicsItem
,将其地址填充到QByteArray
中,并以特定于应用程序的mime类型发送该地址。当然,如果拖动在另一个进程中结束(接收站点可以进行测试,因为在这种情况下,QDragEvent::source()
返回0
),则这不起作用,并且需要特别小心处理图形项的生存期由于
QMimeData
允许您同时传递多种格式,因此这些选项是非独占的。但是,您应该对重新实现qmiedata::formats()
后返回的格式进行排序,以降低特定性,即应用程序私有格式排在第一位,text/uri列表排在最后。通过qmiedata
发送QPixmap
有多种方法:
通过将其编码为PNG等文件格式,并使用mime类型发送该文件(QMimeData
),参见QMimeData::imageData()
)
通过使用QDataStream
将QPixmap
序列化为QByteArray
并在特定于应用程序的mime类型应用程序/x-app-name
下发送序列化
通过将图像数据写入磁盘上的文件,并使用mime类型text/uri list
为其发送文件URL(QMimeData
对此具有内置支持,请参见QMimeData::URL()
)。这允许将这些图像拖到文件管理器或桌面上
与上面的(2)类似,您还可以创建一个QGraphicsItem
,将其地址填充到QByteArray
中,并以特定于应用程序的mime类型发送该地址。当然,如果拖动在另一个进程中结束(接收站点可以进行测试,因为在这种情况下,QDragEvent::source()
返回0
),则这不起作用,并且需要特别小心处理图形项的生存期
由于QMimeData
允许您同时传递多种格式,因此这些选项是非独占的。但是,您应该对重新实现QMimeData::formats()
后返回的格式进行排序,以降低特定性,即应用程序私有格式排在第一位,text/uri list
排在最后