у меня есть 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 code:
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);
}
ты знаешь что с ним не так? заранее спасибо
Это связано с флагом Qt::ItemIsUserCheckable
что вы установили.
Для QTreeWidgetItem
чтобы быть проверяемым вам нужно только использовать setCheckState(0, Qt::Unchecked)
,
Если вы прокомментируете строки, в которых вы устанавливаете флаги, я думаю, ваш код будет работать.