2011-11-03 81 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', 
     ])