множественная установка qtreewidgetiitem checkatate не работает

у меня есть 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);
}

ты знаешь что с ним не так? заранее спасибо

0

Решение

Это связано с флагом Qt::ItemIsUserCheckable что вы установили.
Для QTreeWidgetItem чтобы быть проверяемым вам нужно только использовать setCheckState(0, Qt::Unchecked),

Если вы прокомментируете строки, в которых вы устанавливаете флаги, я думаю, ваш код будет работать.

0

Другие решения


По вопросам рекламы [email protected]