2010-11-23 7 views
14

私のフォームには、チェック可能なQListWidgetItemsを含むQListWidgetがあります。 QListWidgetItemがチェックされている/チェックされていないというイベントをキャプチャする方法を探しています。私はこのようなシグナルは存在しませんが、おそらく私は間違っています。私が現在行っているのは、QListWidget :: itemClicked()シグナルを使用し、QListWidgetItemのcheckStateをチェックしていますが、これはアイテムがクリックされたときにこのイベントが発生したために必要なものではありません。 。誰か助けてもらえますか?ありがとう!Qt/C++:QListWidgetItemがチェックされたときのシグナル?

+1

私は、QListWidget :: itemChanged()シグナルを使ってこの問題を回避できると思います。これは、アイテムをチェック/チェック解除したときにトリガされますが、アイテムの値を編集すると、私は今行っていませんが、まだ不完全な解決策です。 – Joseph

+1

'QListWidget :: itemClicked()'のもう1つの問題は、キーボードを使用したときに起動しないことです。たとえば、スペースキーを使用してチェック状態を変更します。 – Hossein

答えて

18

明らかにそのような信号は提供されていませんが、QListWidget::itemChanged(QListWidgetItem* item)を使用し、その結果のitem->checkState()をスキャンすることをお勧めします。これは若干改善する必要がありますitemClicked

+0

保護された信号です。私はこのエラーを[ここ](https://stackoverflow.com/q/48059796/1080355)で説明されているように使用するとエラーに直面します。 – VSB

0

QListViewを使用して独自のQAbstractListModelを使用することもできます。最初は、独自の管理コードを追加する必要があるので、いくつかの追加コードを追加します。しかし、あなたはより低いレベルのアクセスを得る。基本的にはQListViewがあなたのモデルに何をするか尋ねるからです。また、入力をあなたのリストモデルに中継して、そこに引っ掛けることができます。

また、QStandardItemModelをサブクラス化して、チェックボックスの変更に関する特定の編集を行うこともできます。

関連する問題