'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