2

我已经QTreeWidgetItem设置了QTreeWidget2 列。两个单元格都有一个由 设置的 CheckBox setCheckState(...)

当用户取消选中我的第一列中的 CheckBox 时,我取消选中第 2 列中的第二个 CheckBox。

现在,我想阻止用户再次检查第二个 CheckBox。是否可以在第 2 列中删除此复选框或仅禁用此单元格?到目前为止,我刚刚看到所有标志都适用于整个项目,并且一组 CheckBox 不会消失。

顺便提一句。这些项目不可编辑,我不想使用QTableWidget/ -Item

更新:

当我为该项目调用 setCheckState 时,Qt 将自动插入 CheckBox:

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

new项目不拥有 CheckBox 之后(Qt 默认情况下)。调用setCheckState(...)我会自动插入一个带有Qt::CheckState我想要的复选框(此处为第 0 列)。

但是在我完成之后,就无法删除 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 回答