[PyQt] A list of checkboxes
spatar
aonlazio at gmail.com
Wed Jan 6 19:58:26 GMT 2010
How do you find out whether an item is checked or not?
eliben wrote:
>
>
> 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://old.nabble.com/A-list-of-checkboxes-tp23507710p27026949.html
Sent from the PyQt mailing list archive at Nabble.com.
More information about the PyQt
mailing list