David Boddie wrote: > > On Tue May 12 19:20:14 BST 2009, eliben wrote: > >> I want to display a QListView where each item is a checkbox with some >> label. The checkboxes should be visible at all times. One way I can think >> of is using a custom delegate and QAbstractListModel. Are there simpler >> ways? Can you provide the simplest snippet that does this? > > If you are writing your own model, just include the Qt.ItemIsUserCheckable > flag in the return value from the flags() method, and ensure that you > return > a valid value for the Qt.CheckStateRole from the data() method. > > If you use the QStandardItemModel class, include the > Qt.ItemIsUserCheckable > flag in those you pass to each item's setFlags() method, and set the check > state for the Qt.CheckStateRole with its setData() method. > > In an interactive Python session, type the following: > > from PyQt4.QtGui import * > > model = QStandardItemModel() > item = QStandardItem("Item") > item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) > item.setData(QVariant(Qt.Checked), Qt.CheckStateRole) > model.appendRow(item) > > view = QListView() > view.setModel(model) > view.show() > > David > _______________________________________________ > PyQt mailing list PyQt@riverbankcomputing.com > http://www.riverbankcomputing.com/mailman/listinfo/pyqt > >
David, Thanks a lot for the reply. It works. For the record here's a smallish test based on your code that creates several items with various check states: from PyQt4.QtCore import * from PyQt4.QtGui import * import sys from random import randint app = QApplication(sys.argv) model = QStandardItemModel() for n in range(10): item = QStandardItem('Item %s' % randint(1, 100)) item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) check = Qt.Checked if randint(0, 1) == 1 else Qt.Unchecked item.setData(QVariant(check), Qt.CheckStateRole) model.appendRow(item) view = QListView() view.setModel(model) view.show() app.exec_() -- View this message in context: http://www.nabble.com/A-list-of-checkboxes-tp23507710p23514827.html Sent from the PyQt mailing list archive at Nabble.com. _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt