我有一个带有可检查项目的qtreewidget
,我希望更改要检查的状态或不基于某个值,第一次创建toplevelitems
我设置项目取消选中并且它有效,但是之后,当我想在代码中检查它时,它会被检查但是当显示时复选框没有勾选。
我第一次设置代码是:
for(int i = 0; i < PermisionDataBase.allEvents().size(); i++) {
m_eventList->addTopLevelItem(new QTreeWidgetItem);
m_eventList->topLevelItem(m_eventList->topLevelItemCount()-1)->setText(0, PermisionDataBase.allEvents().keys()[i]);
m_eventList->topLevelItem(m_eventList->topLevelItemCount()-1)->setCheckState(0, Qt::Unchecked);
}
但在我检查之后,它没有检查
for(int j = 0; j < m_eventList->topLevelItemCount(); j++) {
m_eventList->topLevelItem(j)->setCheckState(0, Qt::Checked);
并且我在if子句中检查了这些项目并且我得到它们被检查,但是当它们被显示时没有勾选任何项目,mt if子句代码:
for(int j = 0; j < m_eventList->topLevelItemCount(); j++) {
if(m_eventList->topLevelItem(j)->checkState(0) == Qt::Checked)
qDebug() << m_eventList->topLevelItem(j)->text(0);
}
你知道它有什么问题吗?提前谢谢你
答案 0 :(得分:0)
这是由您设置的标志Qt::ItemIsUserCheckable
引起的。
要使QTreeWidgetItem
可以检查,您只需使用setCheckState(0, Qt::Unchecked)
。
如果您对设置标记的行进行注释,我猜您的代码将起作用。