所以我目前的列表视图代码只是让我拖放到计算机上的文件到我的列表视图。我想要的是能够重新排列列表视图项目,问题是当我试图用drop方法覆盖导入文件并且什么也没有发生。例如,如果拖动是从listview外部的,我希望它导入,如果拖动是内部的,或者更确切地说是从listview内部拖动,我希望它只是像使用InternalMove一样移动。PyQt QListView拖放的问题导入和重新排列在一个列表中
添加这对我的代码:
self.listView.setDragDropMode(QtGui.QAbstractItemView.InternalMove);
虽然注释掉此:
def dropEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
links = []
for url in event.mimeData().urls():
links.append(str(url.toLocalFile()))
self.emit(QtCore.SIGNAL("dropped"), links)
else:
event.ignore()
导致重排以完美的工作,但不会允许我通过拖动来导入文件。
正因为如此,我收集了上述是我的问题的原因,但我无法弄清楚如何解决它,并同时工作,它似乎应该是一个简单的修复。
我不知道这是否是正确的方向,但我知道:
if event.mimeData().hasUrls:
返回true,如果从列表视图外,并返回false如果列表视图中
你将最有可能通知上面的代码是: http://tech.xster.net/tips/pyqt-drag-images-into-list-widget-for-thumbnail-list/ 和 http://zetcode.com/tutorials/pyqt4/dragdrop/
我知道我可以创建一个查询设置的鼠标POS并删除它并将它重新添加到最近的位置,但是当InternalMove内置并满足我的需求时,这似乎很麻烦。
任何帮助将不胜感激,谢谢你的时间!
也许[Qt在两个QListWidget之间拖放](http://stackoverflow.com/q/4591923/95735)可能有所帮助。 – 2013-03-11 10:30:22
这似乎是我正在寻找的,但是一旦我有了它,我会让你知道,如果它能工作,你应该重新发布它作为答案,我可以选择它!谢谢! – Burninghelix123 2013-03-11 19:39:38