user501743
user501743

Reputation: 199

pyQt: query checkbox checked in a QListWidget

I am adding Checkboxes to a QlistWidget like this

item = QtGui.QListWidgetItem(listWidget)
ch = QtGui.QCheckBox()
listWidget.setItemWidget(item, ch)

like here Can't change state of checkable QListViewItem with custom widget

but i am somehow unable to get the checkbox item back at the time i want to know if they are checked by the user. I must be missing something very basic...

for index in xrange(listWidget.count()): 
    it=listWidget.itemAt(index,0)

So i need to know which checkboxes in the list the user checked? I cant figure what to do with the returned list item object to get the checkbox state. Should i use checkbox callbacks instead? Seems easier

Upvotes: 3

Views: 8653

Answers (1)

Stephen Terry
Stephen Terry

Reputation: 6279

I don't think you want to use itemAt to get the item. From the QListWidget docs:

QListWidgetItem QListWidget.itemAt (self, int ax, int ay)

Returns a pointer to the item at the coordinates (x, y).

You probably want QListWidget.item(). Using that you can loop over the list items and get the check state like this

for index in xrange(listWidget.count()):
    check_box = listWidget.itemWidget(listWidget.item(index))
    state = check_box.checkState()

Upvotes: 3

Related Questions