更新行时如何提高QTreeView的速度?


烏鴉喝酒
2025-04-08 02:38:12 (18小时前)


群岛,‘美国’,‘瓦利斯和富图纳群岛’,‘西方

撒哈拉
</跨度>
’,‘也门’,‘赞比亚’,‘津巴布韦’
]

model = self.ui_items.model()
model.clear()
columns = [“名称”,“新名称

2 条回复
  1. 0# 是吗@ | 2019-08-31 10-32



    您默认启用了列排序和调整大小。这意味着每次更改一行时,将重新排序整个列表并重新调整大小。显然,如果列表相当长,这将绝对会破坏性能。



    解决方案是关闭默认排序/调整大小,并仅在重新填充列表后应用它:




    1. class PSRenamer(QtGui.QMainWindow):
      def init(self):

      self.ui_items.setModel(self._model)

    2.     # self.ui_items.setSortingEnabled(True)
    3.     # self.ui_items.sortByColumn(0, QtCore.Qt.AscendingOrder)
    4.     self.ui_items.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
    5.     self.ui_items.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
    6.     self.ui_items.setFocusPolicy(QtCore.Qt.NoFocus)
    7.     # self.ui_items.header().setResizeMode(QtGui.QHeaderView.ResizeToContents)
    8.     self.ui_items.header().setStretchLastSection(False)
    9. def set_new_names(self, template):
    10.     self.ui_items.setSortingEnabled(False)
    11.     ...
    12.     # Set names
    13.     ...
    14.     self.ui_items.setSortingEnabled(True)
    15.     self.ui_items.sortByColumn(0, QtCore.Qt.AscendingOrder)
    16.     self.ui_items.header().resizeSections(QtGui.QHeaderView.ResizeToContents)
    17. </code>

登录 后才能参与评论