Нередактируемом QListView

У меня есть QListView, отображающий список элементов, но я не хочу, чтобы элементы редактировались (в настоящее время двойной щелчок по элементу позволяет редактировать их).

Это мой код:

self.listView = QListView()
self.model = QStringListModel([ "item1" , "item2" , "item3" ])
self.listView.setModel( self.model )

self.layout = QGridLayout()  
self.layout.addWidget(self.listView, 0 , 0 )
self.setLayout(self.layout)

3 ответов


добавить строку:

self.listView.setEditTriggers(QAbstractItemView.NoEditTriggers)

должны исправить вещи для вас.

QListView наследует QAbstractItemView, который имеет метод setEditTriggers(). Другое возможные значения для setEditTriggers доступны в документах.


QStringListModel по определению редактируется. Вы должны подкласс и предоставить соответствующий флаги


Спасибо за ответы. Я закончил тем, что с QListWidget вместо этого, поскольку он не редактируется по умолчанию.

хотя я также нашел, если вы дадите QListView дважды щелкните мышью событие и установите его, чтобы сделать что-то другое, чем редактировать QListView, он переопределяет функцию редактирования, чтобы она тоже работала.

еще раз спасибо, очень признателен.