2

2列で設定QTreeWidgetItemしました。QTreeWidget両方のセルが によって設定された CheckBox を取得しましたsetCheckState(...)

ユーザーが最初の列の CheckBox のチェックを外すと、列 2 の 2 番目の CheckBox のチェックを外します。

ここで、ユーザーがこの 2 番目の CheckBox を再度チェックできないようにしたいと思います。列 2 のこの CheckBox を削除するか、このセルのみを無効にすることはできますか? これまでのところ、すべてのフラグがアイテム全体で機能し、セットの CheckBox が消えないことを確認しました。

ところで。QTableWidgetアイテムは編集できず、 /を使用したくありません-Item

アップデート:

項目に対して setCheckState を呼び出すと、Qt によって CheckBox が自動的に挿入されます。

QTreeWidgetItem *item = new QTreeWidgetItem(ui.TreeWidget);
item->setCheckState(0, Qt::Checked);

アイテムが CheckBox を所有しnewていない場合 (Qt のデフォルト)。呼び出すsetCheckState(...)と、必要な CheckBox (ここでは列 0) が自動的に挿入されますQt::CheckState

しかし、私がそれを行った後、CheckBoxを削除する方法はありません-そうです。

後でこのCheckBoxを取り除く方法を誰かが解決したのでしょうか?どんな助けでも大歓迎です!

4

1 に答える 1

7

これはそれを行います:

item->setData(0, Qt::CheckStateRole, QVariant());           //No checkbox at all (what you wanted)

これらの他のいずれもチェックボックスのスペースを表示します

item->setData(0, Qt::CheckStateRole, Qt::Unchecked);        //Unchecked checkbox
item->setData(0, Qt::CheckStateRole, Qt::Checked);          //Checked checkbox
item->setData(0, Qt::CheckStateRole, Qt::PartiallyChecked); //Partially checked checkbox (gray)

setCheckState メソッドは「非チェック状態」を設定できません。Checked、PartiallyChecked、または Unckecked のみを設定できます。

于 2011-08-14T04:24:00.110 に答える