将同一项添加到两个单独的QListWidgets中

2024-09-28 01:27:10 发布

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

我的项目包含两个完全相同项的独立qlistwidget。我的代码成功地将项添加到第一个列表,但没有添加到第二个列表。一定有人以前这样做过,但搜索结果是用来删除重复项的。在

是否可以在两个QListWidgets中添加一个项而不每次都创建新项?我可以解决这个问题,但这似乎是一个学习的机会。在

for item in listItems:
    itm = QtWidgets.QListWidgetItem(item);
    self.lstOne.addItem(itm);
    self.lstTwo.addItem(itm);         #fills the first but not the second

以下是所有代码:

^{pr2}$

Tags: the项目代码inself列表foritem
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:10

共享相同项的两个列表是使用共享模型的QListView对象的一个很好的用例。对于小列表,可以使用QStandardItemModel,它包含QStandardItems,如下所示:

# -*- coding: utf-8 -*-

import sys
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import (QWidget, QApplication,  QListView)

class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()


    def initUI(self):

        self.lstOne = QListView(self)
        self.lstTwo = QListView(self)
        self.lstTwo.move(0,  250)

        model = QtGui.QStandardItemModel(parent=self)

        listItems = ["one",  "two",  "three",  "four"]     

        for item in listItems:
            itm = QtGui.QStandardItem(item)
            model.appendRow(itm)

        self.lstOne.setModel(model)
        self.lstTwo.setModel(model)

        self.setGeometry(300, 300, 500, 500)
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

如果您有一个大列表,您应该考虑实现您自己的模型类(从QAbstractListModel派生)。这样做的好处是不需要预先为所有列表元素创建项类,因此可以提供更好的性能。在

{a1}你可以阅读更多关于Qt模型的内容

相关问题 更多 >

    热门问题