[英]Qt/C++: Signal for when a QListWidgetItem is checked?
In my form I have a QListWidget
which contains checkable QListWidgetItems
. 在我的表单中,我有一个
QListWidget
,其中包含可检查的QListWidgetItems
。 I'm looking for a way to capture the event of a QListWidgetItem
being checked/unchecked. 我正在寻找一种方法来捕获正在检查/取消选中的
QListWidgetItem
的事件。 I don't see any such signal existing for this but maybe I'm wrong. 我没有看到任何这样的信号,但也许我错了。 What I'm currently doing is using the
QListWidget::itemClicked()
signal and checking the checkState
of the QListWidgetItem
, but this isn't what I want because this event happens any time the item is clicked, not just went the checkmark is toggled. 我目前正在做的是使用
QListWidget::itemClicked()
信号并检查QListWidgetItem
的checkState
,但这不是我想要的,因为这个事件在点击项目时发生,而不仅仅是切换标记。 Can anyone give some assistance? 谁能提供一些帮助? Thanks!
谢谢!
Apparently no such signal is provided, your best bet is to use QListWidget::itemChanged(QListWidgetItem* item)
, and scan the resulting item->checkState()
. 显然没有提供这样的信号,最好的办法是使用
QListWidget::itemChanged(QListWidgetItem* item)
,并扫描生成的item->checkState()
。 This should be a slight improvement over using itemClicked
与使用
itemClicked
相比,这应该略有改进
An extra option is to use your own QAbstractListModel
with a QListView
. 一个额外的选择是使用您自己的
QAbstractListModel
和QListView
。 At first this does add some extra code as you need to add your own management code . 首先,这会添加一些额外的代码,因为您需要添加自己的管理代码。 But you do get a lower level access.
但是你确实获得了较低级别的访问权限。 Basically because the
QListView
will ask your model what to do. 基本上是因为
QListView
会询问您的模型该做什么。 It will also relay input back to your listmodel where you can hook into it. 它还会将输入中继回您的listmodel,您可以在其中挂钩。
Alternatively you could subclass QStandardItemModel
and catch certain edits related to changing the checkbox. 或者,您可以
QStandardItemModel
并捕获与更改复选框相关的某些编辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.