如何在QListView中显示索引号?

How to display index number in QListView?

我有 ListView 并遍历字典。我想在视图中显示每行的索引号。

model = QtGui.QStandardItemModel()
self.listView.setModel(model)

results = {'D2_SMI_1': True, 'D2_SMI_2': False}

for key, value in results.items():
    item = QStandardItem(key)
    item.setCheckable(True)
    item.setCheckState(value)
    model.appendRow(item)

一个可能的解决方案是通过委托添加号码:

import sys

from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QApplication, QListView, QStyledItemDelegate


class Delegate(QStyledItemDelegate):
    def initStyleOption(self, option, index):
        super().initStyleOption(option, index)
        option.text = f"{index.row() + 1}. {option.text}"


def main():
    app = QApplication(sys.argv)

    model = QStandardItemModel()

    for text in ("D2_SMI_1", "D2_SMI_2", "D2_SMI_3", "D2_SMI_4"):
        item = QStandardItem(text)
        model.appendRow(item)

    view = QListView()
    view.setModel(model)
    view.resize(640, 480)
    view.show()

    delegate = Delegate(view)
    view.setItemDelegate(delegate)

    ret = app.exec_()
    sys.exit(ret)


if __name__ == "__main__":
    main()