本文主要介绍Python下通过设置Qt::CheckStateRole来隐藏勾选框(checkbox)的方式。
QListWidgetItem设置物品多选的的方法很简单,通过setCheckState()或者setFlags()都可以实现,但是在设置“多选”之后,勾选框就不能通过设置setFlags()来去除Qt::ItemIsUserCheckable的标识。
根据以下链接的博文说明:
http://badlyhonedbytes.wordpress.com/2013/03/31/hiding-the-checkbox-of-a-qlistwidgetitem/
The trick is to use QListWidgetItem::setData() to set the data in the Qt::CheckStateRole to an empty QVariant(). The same method can be used to set the item’s check state.
只要通过QListWidgetItem::setData()来设置data中的Qt::CheckStateRole为一个空的变量QVariant()即可,在Python中实现方式如下:
[python]
from PyQt4 import QtCore, QtGui
#列出QlistWidget的总行数
rows = self.listWidget_item.count()
#读取QlistWidget中的每一行
for row in xrange(rows):
#返回所给“行”的物件
item = self.listWidget_item.item(row)
#设置Qt::CheckStateRole的值为空
#的QVariant()变量,10代表Qt::CheckStateRole
item.setData(10, QtCore.QVariant())
[/python]
参考资料
QListWidgetItem
http://qt-project.org/doc/qt-4.8/qlistwidgetitem.html
QVariant
http://qt-project.org/doc/qt-4.8/qvariant.html#QVariant
ItemDataRole
http://qt-project.org/doc/qt-4.8/qt.html#ItemDataRole-enum
发表回复