[PyQt] A list of checkboxes
eliben
eliben at gmail.com
Wed May 13 04:30:55 BST 2009
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 at 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.
More information about the PyQt
mailing list