2011-11-03 84 views
3

我猜QTreeWidget的实现并不完全相同,但我希望能够将外部文件,特别是图像或电影文件放入我的QTreeWidget中。我并没有试图将它拖入特定的QTreeWidgetItem,而是将其作为一个整体。这里是我的代码:将外部文件放入QTreeWidget

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

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

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