<p>我有一个QTreeWidget,里面有一堆QTreeWidgetItems。每个QTreeWidgetItem都有一个QDateTime形式的时间戳。QTreeWidget按时间戳排序。我有另一个QTreeWidgetItems列表,它也是按时间戳排序的。我想将这个QTreeWidgetItems列表添加到我的QTreeWidgetItems,并在QTreeWidgetItems中组合排序的QTreeWidgetItems列表。在</p>
<p>目前,我是这样组合QTreeWidgetItems的两个列表的:</p>
<pre><code> #1
#self is my QTreeWidget class
numItems = self.topLevelItemCount()
#items is the new list of QTreeWIdgetItems to be added
numAddItems = len(items)
if numAddItems == 0:
return
while addItemIndex < numAddItems:
addItem = items[addItemIndex]
if itemIndex < numItems:
item = self.topLevelItem(itemIndex)
addItemDateTime = items[addItemIndex].getTimestamp()
itemDateTime = item.getTimestamp()
if addItemDateTime < itemDateTime:
self.insertTopLevelItem(itemIndex, addItem)
addItemIndex += 1
else:
self.addTopLevelItem(addItem)
addItemIndex += 1
itemIndex += 1
numItems = self.topLevelItemCount()
</code></pre>
<p>我知道要合并和排序两个Python列表,我可以做如下操作:</p>
^{pr2}$
<p>我知道QTreeWidget有一个sortItems()方法。如何告诉QTreeWidget使用QDateTime进行排序?在</p>
<p>我也可以这样做:</p>
<pre><code>#2
#self is a QTreeWidget
#get a list of all the QTreeWidgetItems in the QTreeWidget
currentItems = []
numItems = self.topLevelItemCount()
for i in range(numItems):
currentItems.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(self.topLevelItem(i))
#clear the QTreeWidget
self.clear()
#perform a merge sort on the list of all the QTreeWidgetItems
items = self.mergesort(currentItems + newItems)
for item in items:
self.addTopLevelItem(item)
</code></pre>
<p>那么,有什么更好的方法来组合我的两个qtreewigetitems列表呢?在</p>