您默认启用了列排序和调整大小。这意味着每次更改一行时,将重新排序整个列表并重新调整大小。显然,如果列表相当长,这将绝对会破坏性能。
解决方案是关闭默认排序/调整大小,并仅在重新填充列表后应用它:
class PSRenamer(QtGui.QMainWindow):
def init(self):
…
self.ui_items.setModel(self._model)
# self.ui_items.setSortingEnabled(True)
# self.ui_items.sortByColumn(0, QtCore.Qt.AscendingOrder)
self.ui_items.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.ui_items.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
self.ui_items.setFocusPolicy(QtCore.Qt.NoFocus)
# self.ui_items.header().setResizeMode(QtGui.QHeaderView.ResizeToContents)
self.ui_items.header().setStretchLastSection(False)
def set_new_names(self, template):
self.ui_items.setSortingEnabled(False)
...
# Set names
...
self.ui_items.setSortingEnabled(True)
self.ui_items.sortByColumn(0, QtCore.Qt.AscendingOrder)
self.ui_items.header().resizeSections(QtGui.QHeaderView.ResizeToContents)
</code>