gpt4 book ai didi

python - 撤消 setFlags ItemIsUserCheckable

转载 作者:行者123 更新时间:2023-11-28 20:25:22 24 4
gpt4 key购买 nike

我创建了一个 QListWidget 并且我想让它的元素只在应用程序的特定位置可检查(我需要它用于特定的应用程序,用户在单击它的同时选择列表中的主要元素然后选择次要元素同时检查他们的箱子)。我可以让元素可检查,但我找不到撤消此操作并删除复选框的解决方案...我这样做了:

for i in range(self.listWidget.count()):
item=self.listWidget.item(i)
item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
item.setCheckState(QtCore.Qt.Unchecked)

但后来我挣扎了...我试过了:

tmp=self.listWidget.takeItem(i)
self.listWidget.addItem(tmp)

但是项目返回时带有复选框:(我可以简单地销毁该元素,然后再将其放回原处,但这可能是一种沉重的待遇!有什么解决办法吗?

谢谢!

最佳答案

要删除标志,请尝试:

item.setFlags(item.flags() ^ QtCore.Qt.ItemIsUserCheckable)

^^ item 是您要取消标记的元素。简单来说,^ 运算符与 | 相反,因此从 的现有标志中排除了 QtCore.Qt.ItemIsUserCheckable 标志item.flags() 返回

更新:

虽然上面的代码会禁用勾选功能,但要完全隐藏复选框,请尝试

item.setData(Qt::CheckStateRole, QVariant());

请注意,调用后不会保留复选框的状态。

关于python - 撤消 setFlags ItemIsUserCheckable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15389905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com