0

我有一个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);
    }

你知道有什么问题吗?先感谢您

4

1 回答 1

0

这是由于Qt::ItemIsUserCheckable您设置的标志。要使 aQTreeWidgetItem可检查,您只需要使用setCheckState(0, Qt::Unchecked).

如果您评论设置标志的行,我猜您的代码将起作用。

于 2014-04-23T07:35:43.540 回答