4

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 は呼び出されておらず、「ブロックされた」アイコンが表示されています。理由はありますか?

4

1 に答える 1

6

サポートしたいタイプのリストを返すようにQTreeWidget.mimeTypesを再実装する必要があります。

def mimeTypes(self):
    return QtCore.QStringList([
        'text/uri-list',
        'application/x-qabstractitemmodeldatalist',
        ])
于 2011-11-03T20:33:52.323 に答える