将外部文件拖放到QTreeWidget中

时间:2011-11-03 19:06:32

标签: python pyqt

我想QTreeWidget的实现并不完全相同,但我希望能够将外部文件,特别是图像或电影文件放入我的QTreeWidget中。我不是想把它拖到一个特定的QTreeWidgetItem中,而是整个树。这是我的代码:

class moTree(QTreeWidget):
    def __init__(self, parent):
        super(moTree, self).__init__(parent)
        self.setMouseTracking(True)
        self.setAcceptDrops(True)

    def dragEnterEvent(self, event):
        if event.mimeData().hasUrls:
            event.accept()
        else:
            event.ignore()

    def dropEvent(self, event):
        if event.mimeData().hasUrls:
            for url in event.mimeData().urls():
                #Handle stuff here
        else:
            event.ignore()  

正在调用dragEnterEvent,但是dropEvent不是,我正在获取'被阻止'图标。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您需要重新实现QTreeWidget.mimeTypes,以便返回您要支持的types列表:

def mimeTypes(self):
    return QtCore.QStringList([
        'text/uri-list',
        'application/x-qabstractitemmodeldatalist',
        ])