您作为示例使用的代码似乎运行良好,并且看起来很干净。根据您的评论,您的列表小部件尚未初始化。这应该是您问题的根本原因。我已经简化了您的代码,并在我的Ubuntu
10.04LTS上进行了尝试,并且运行良好。我的代码在下面列出,看看是否也适合您。您应该能够将文件拖放到列表小部件中;删除后,将添加一个新项目,其中显示了图像和图像的文件名。
import sysimport osfrom PyQt4 import QtGui, QtCoreclass TestListView(QtGui.QListWidget): def __init__(self, type, parent=None): super(TestListView, self).__init__(parent) self.setAcceptDrops(True) self.setIconSize(QtCore.QSize(72, 72)) def dragEnterEvent(self, event): if event.mimeData().hasUrls: event.accept() else: event.ignore() def dragMoveEvent(self, event): if event.mimeData().hasUrls: event.setDropAction(QtCore.Qt.CopyAction) event.accept() else: event.ignore() def dropEvent(self, event): if event.mimeData().hasUrls: event.setDropAction(QtCore.Qt.CopyAction) event.accept() links = [] for url in event.mimeData().urls(): links.append(str(url.toLocalFile())) self.emit(QtCore.SIGNAL("dropped"), links) else: event.ignore()class MainForm(QtGui.QMainWindow): def __init__(self, parent=None): super(MainForm, self).__init__(parent) self.view = TestListView(self) self.connect(self.view, QtCore.SIGNAL("dropped"), self.pictureDropped) self.setCentralWidget(self.view) def pictureDropped(self, l): for url in l: if os.path.exists(url): print(url) icon = QtGui.QIcon(url) pixmap = icon.pixmap(72, 72) icon = QtGui.QIcon(pixmap) item = QtGui.QListWidgetItem(url, self.view) item.setIcon(icon) item.setStatusTip(url)def main(): app = QtGui.QApplication(sys.argv) form = MainForm() form.show() app.exec_()if __name__ == '__main__': main()希望这会有所帮助,问候



