'I want to drag file or dir from disk to QTreeWidget
import sys
from PySide2 import QtCore, QtWidgets
class DragToTree(QtWidgets.QWidget):
def __init__(self, parent=None):
super(DragToTree, self).__init__(parent)
form = QtWidgets.QFormLayout()
form.setHorizontalSpacing(0)
self.my_tree = QtWidgets.QTreeWidget()
self.my_tree.setHeaderLabel("I want to drag a file or dir to treewidget")
self.my_tree.setStyleSheet("""border: 1px solid red;""")
self.my_tree.setAcceptDrops(True)
self.my_tree.installEventFilter(self)
form.addWidget(self.my_tree)
self.setLayout(form)
self.setGeometry(300, 300, 600, 400)
def eventFilter(self, obj, event):
if obj is self.my_tree:
if event.type() == QtCore.QEvent.DragEnter:
if event.mimeData().hasUrls():
event.accept()
else:
event.ignore()
if event.type() == QtCore.QEvent.Drop:
if event.mimeData().hasUrls():
url = event.mimeData().urls()[0]
self.my_tree.setHeaderLabel(url.toString())
return super().eventFilter(obj, event)
if __name__ == "__main__":
app = QtWidgets.QApplica[enter image description here][1]tion(sys.argv)
dl = DragToTree()
dl.show()
sys.exit(app.exec_())
I tried QLineEdit or QLabel, it works, but QTreeWidget not. What I need to do? dragEnterEvent, dropEvent, startDrag? overwrite treediwget? [1]: https://i.stack.imgur.com/MipcK.png
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
