所以我目前的列表視圖代碼只是讓我拖放到計算機上的文件到我的列表視圖。我想要的是能夠重新排列列表視圖項目,問題是當我試圖用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