【发布时间】:2012-05-08 18:32:44
【问题描述】:
与this question 非常相似,我希望能够将图像从 PyQt 应用程序拖放到 OSX 文件系统。
但是,当我使用以下代码时,放置位置没有出现任何内容。
看来我很接近了。如果我将mimeData.setData(mimeType, byteArray) 更改为mimeData.setData("text/plain", selectedImagePath),我会在放置目标处得到一个“无标题剪辑”文件,所以至少我可以确定拖放操作正在工作。
def startDrag(self, event):
selectedImagePath = "/sample/specified/file.jpg"
## convert to a bytestream
#
mimeData = QtCore.QMimeData()
image = QtGui.QImage(selectedImagePath)
extension = os.path.splitext(selectedImagePath)[1].strip(".")
mimeType = "image/jpeg" if extension in ["jpeg", "jpg"] else "image/png"
byteArray = QtCore.QByteArray()
bufferTime = QtCore.QBuffer(byteArray)
bufferTime.open(QtCore.QIODevice.WriteOnly)
image.save(bufferTime, extension.upper())
mimeData.setData(mimeType, selectedImagePath)
drag = QtGui.QDrag(self)
drag.setMimeData(mimeData)
result = drag.start(QtCore.Qt.CopyAction)
event.accept()
我哪里出错了?
我意识到我还需要设置已删除媒体的名称,因此也将不胜感激任何有关此方面的指导。
【问题讨论】:
标签: drag-and-drop qt4 pyqt osx-snow-leopard