简体   繁体   English

Qt / C ++:检查QListWidgetItem时的信号?

[英]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()信号并检查QListWidgetItemcheckState ,但这不是我想要的,因为这个事件在点击项目时发生,而不仅仅是切换标记。 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 . 一个额外的选择是使用您自己的QAbstractListModelQListView 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM