多个设置qtreewidgetiitem检查不起作用

时间:2014-04-23 04:27:16

标签: c++ qt qtreewidgetitem

我有一个带有可检查项目的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);
    }
你知道它有什么问题吗?提前谢谢你

1 个答案:

答案 0 :(得分:0)

这是由您设置的标志Qt::ItemIsUserCheckable引起的。 要使QTreeWidgetItem可以检查,您只需使用setCheckState(0, Qt::Unchecked)

如果您对设置标记的行进行注释,我猜您的代码将起作用。