したがって、現在のリストビューコードを使用すると、コンピューター上のファイルをリストビューにドラッグアンドドロップできます。私が欲しいのは、リストビューアイテムを再配置できるようにすることです。問題は、ファイルをインポートするためにdropメソッドで上書きしようとしても、何も起こらないことです。たとえば、ドラッグがリストビューの外側からインポートする場合、ドラッグが内部の場合、またはリストビュー内からの場合は、InternalMoveの場合と同じように単純に移動します。
これを私のコードに追加します:
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/からのものであることに気付くでしょう。 チュートリアル/pyqt4/ dragdrop /
マウスの位置をクエリしてアイテムを削除し、最も近い位置に再度追加するセットアップを作成できることはわかっていますが、InternalMoveが組み込まれていて、ニーズに合っている場合は、非常に問題が発生するようです。
時間をありがとう、どんな助けでも大歓迎です!