QTreeWidgetItemIterator
をフィルタリングして、チェックできない項目が結果から除外されるようにすることはできますか?この例ではQTreeWidgetItemIteratorでチェックできない結果をフィルタリングする方法はありますか?
TreeList = ({
'Header1': (('Item11', 'Item12',)),
'Header2': (('Item21', 'Item22',)),
})
# LOCATED IN `initLayout` METHOD
for key, value in TreeList.items():
parent = QTreeWidgetItem(self.ListTreeView, [key])
for val in value:
child = QTreeWidgetItem([val])
child.setFlags(child.flags() | Qt.ItemIsUserCheckable)
child.setCheckState(0, Qt.Unchecked)
parent.addChild(child)
# LOCATED IN `initialize` METHOD
iterator = QTreeWidgetItemIterator(self.ListTreeView)
while iterator.value():
val = iterator.value()
try: # Results in object has not attribute
if val.isCheckable():
print('checkable')
except AttributeError as e:
print(e)
iterator += 1
、Header1
またはHeader2
どちらもチェック可能ですが、その下にある項目があります。 QTreeWidget
を反復処理すると、リスト全体が返されます。
IteratorFlagsのドキュメントを見ると、設定できるフラグがありますが、Pythonで設定する方法がわかりませんし、自分のニーズに合っているかどうかはわかりません。
今のところ、val.isCheckable()
はAttributeError
になります。 isCheckable()
はQTreeWidgetItem
の属性ではないと思われますか?
好ましくはチェック不可能な項目を除外したいと思いますが、これが不可能な場合は、値isCheckable()
をチェックするにはどうすればよいですか?
これは私が必要としていたことに対して非常にうまく機能しました。ありがとうございました。 –