2

QListWidgetを作成し、その要素をアプリケーションの特定の場所でのみチェック可能にしたい(ユーザーがリストの主要な要素をクリックして選択し、ボックスをチェックしながら2番目の要素を選択する特定のアプリケーションに必要です) )。要素をチェック可能にしても大丈夫ですが、これを元に戻してチェックボックスを削除する解決策が見つかりません...私はこれを行いました:

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)

しかし、アイテムはチェックボックス付きで戻ってきます:(アイテムを破棄してから元に戻すこともできますが、これは一種の重い扱いになる可能性があります!解決策はありますか?

ありがとう !

4

1 に答える 1

9

フラグを削除するには、次を試してください。

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

^^itemはフラグを外したい要素です。簡単に言えば^、演算子は反対のように機能するため、返される既存のフラグからフラグ|を除外しますQtCore.Qt.ItemIsUserCheckableitem.flags()

アップデート:

上記のコードはチェック可能な機能を無効にしますが、チェックボックスを完全に非表示にするには試してください

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

この呼び出しが行われた後、これはチェックボックスの状態を保持しないことに注意してください。

于 2013-03-13T17:23:32.127 に答える