@@ -55,12 +55,37 @@ def __init__(self, parent=None):
55
55
56
56
self .lstItems .setModel (QStandardItemModel ())
57
57
58
+ self .lstItems .model ().itemChanged .connect (self .onItemChanged )
59
+
60
+ def onItemChanged (self , item ):
61
+ model = self .lstItems .model ()
62
+ checkedItem = None
63
+ for i in range (model .rowCount ()):
64
+ itm = model .item (i )
65
+ if itm .checkState () == Qt .Checked and itm .data () == Qt .Checked :
66
+ checkedItem = i
67
+ break
68
+
69
+ model .blockSignals (True )
70
+ if checkedItem is None :
71
+ item .setData (item .checkState ())
72
+ else :
73
+ if self .chkAllowMultiple .isChecked ():
74
+ item .setData (item .checkState ())
75
+ else :
76
+ model .item (checkedItem ).setCheckState (Qt .Unchecked )
77
+ model .item (checkedItem ).setData (Qt .Unchecked )
78
+
79
+ item .setData (item .checkState ())
80
+ model .blockSignals (False )
81
+
58
82
def addItem (self ):
59
83
model = self .lstItems .model ()
60
84
61
85
item = QStandardItem ('new item' )
62
86
item .setCheckable (True )
63
87
item .setDropEnabled (False )
88
+ item .setData (Qt .Unchecked )
64
89
65
90
model .appendRow (item )
66
91
@@ -103,6 +128,7 @@ def setOptions(self, options):
103
128
item = QStandardItem (i )
104
129
item .setCheckable (True )
105
130
item .setDropEnabled (False )
131
+ item .setData (Qt .Unchecked )
106
132
107
133
model .appendRow (item )
108
134
@@ -113,6 +139,7 @@ def setDefault(self, indexes):
113
139
item = model .item (i )
114
140
if item :
115
141
item .setCheckState (Qt .Checked )
142
+ item .setData (Qt .Checked )
116
143
117
144
def setAllowMultiple (self , allowMultiple ):
118
145
self .chkAllowMultiple .setChecked (allowMultiple )
0 commit comments