如何合并和排序两个QTreeWidgetItems的排序列表?

2024-09-24 22:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个QTreeWidget,里面有一堆QTreeWidgetItems。每个QTreeWidgetItem都有一个QDateTime形式的时间戳。QTreeWidget按时间戳排序。我有另一个QTreeWidgetItems列表,它也是按时间戳排序的。我想将这个QTreeWidgetItems列表添加到我的QTreeWidgetItems,并在QTreeWidgetItems中组合排序的QTreeWidgetItems列表。在

目前,我是这样组合QTreeWidgetItems的两个列表的:

    #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()

我知道要合并和排序两个Python列表,我可以做如下操作:

^{pr2}$

我知道QTreeWidget有一个sortItems()方法。如何告诉QTreeWidget使用QDateTime进行排序?在

我也可以这样做:

#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.append(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)

那么,有什么更好的方法来组合我的两个qtreewigetitems列表呢?在


Tags: theself列表排序is时间itemsitem
2条回答

如果将QTreeView^{}一起使用,这将很容易。在

可以使用^{}(使用自定义角色)添加时间戳,然后可以使用^{}在模型上设置排序键。在

我最终在Python代码中做到了:

sortedItems = sorted(currentItems, key=lambda x: x.getTimestamp())
但是,我必须在C++中重写应用程序,这就是我在C++中所做的:

^{pr2}$

其中LogEvent继承{}。在

相关问题 更多 >