[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