我在QTreeWidgetItem
中设置了QTreeWidget
,其中包含2列。两个单元格都由setCheckState(...)
设置了CheckBox。
当用户在我的第一列中取消选中CheckBox时,我取消选中第2列中的第二个CheckBox。
现在,我想阻止用户再次检查第二个CheckBox。是否可以在第2列中删除此CheckBox或仅禁用此单元格? 到目前为止,我刚刚看到所有标志都在整个项目上工作,并且一组CheckBox不会消失。
顺便说一下。这些项目不可编辑,我不想使用QTableWidget
/ -Item
。
当我为项目调用setCheckState时,Qt会自动插入CheckBox:
QTreeWidgetItem *item = new QTreeWidgetItem(ui.TreeWidget);
item->setCheckState(0, Qt::Checked);
new
项之后没有CheckBox(默认为Qt)。调用setCheckState(...)
我自动在我想要的Qt::CheckState
处插入一个CheckBox(在第0列)。
但是在我完成它之后就没办法删除CheckBox了 - 所以看起来好像。
也许有人有一个解决方案,我怎么能在以后摆脱这个CheckBox?非常感谢任何帮助!
答案 0 :(得分:5)
这样做:
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)
item->setData(0, Qt::CheckStateRole, QVariant()); //No checkbox at all (what you wanted)
setCheckState方法不能设置'no check state',只能设置Checked,PartiallyChecked或Unckecked。