【问题标题】:Disable a column of a QTreeWidgetItem or remove set CheckBox禁用 QTreeWidgetItem 的列或删除设置的 CheckBox
【发布时间】:2010-10-21 11:30:38
【问题描述】:

我在QTreeWidget 中设置了QTreeWidgetItem 2 列。两个单元格都有一个由 setCheckState(...) 设置的 CheckBox。

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

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

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

更新:

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

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

new 之后,该项目不拥有复选框(Qt 默认情况下)。调用 setCheckState(...) 我会自动插入一个 CheckBox(在第 0 列中),其中包含我想要的 Qt::CheckState

但在我完成之后,就无法删除 CheckBox - 看起来如此。

也许有人有一个解决方案,我以后如何摆脱这个 CheckBox?非常感谢任何帮助!

【问题讨论】:

  • 你能告诉你如何在 QTreeWidgetItem 中添加两个复选框吗?如果将它们保存在变量中,则可以访问它们(及其方法)。

标签: c++ qt qtreewidgetitem


【解决方案1】:

这样就可以了:

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。

【讨论】:

    猜你喜欢
    • 2016-10-12
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2023-04-05
    • 2012-08-21
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多