用Qlistvi设置qstandaritemodel中的项选择

2024-05-28 20:50:48 发布

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

我有一个Qlistview和一些项目。我想在窗口启动时设置第一项的选择。selectionModel().selectedRows()返回selectet项。但是 QAbstractItemModel().setCurrentIndex(0)未选择项。那怎么可能像setSelection(INDEX)那样。你知道吗

self.listView = QtWidgets.QListView()
self.entry = QtGui.QStandardItemModel()
self.listView.setModel(self.entry) 
----------
self.listView.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.listView.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
self.listView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
----------
self.listView.QAbstractItemModel().setCurrentIndex(0)     #<------ Not really working
selection = self.listView.selectionModel().selectedRows()
print(selection)

Tags: 项目selflistviewentryselection选择项qtwidgetsqlistview
1条回答
网友
1楼 · 发布于 2024-05-28 20:50:48

如果要选择项目,则必须使用^{}^{}方法:

from PyQt5 import QtCore, QtGui, QtWidgets


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.listView = QtWidgets.QListView(
            editTriggers=QtWidgets.QAbstractItemView.NoEditTriggers,
            selectionMode=QtWidgets.QAbstractItemView.SingleSelection,
            selectionBehavior=QtWidgets.QAbstractItemView.SelectRows,
        )
        self.entry = QtGui.QStandardItemModel()
        self.listView.setModel(self.entry)

        for letter in list("abcdefghijklmnopqrstuvwxyz"):
            it = QtGui.QStandardItem(letter)
            self.entry.appendRow(it)

        ix = self.entry.index(0, 0)
        sm = self.listView.selectionModel()
        sm.select(ix, QtCore.QItemSelectionModel.Select)

        self.setCentralWidget(self.listView)


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

相关问题 更多 >

    热门问题