У меня есть QTreeWidget с элементами в нем. Первый столбец содержит уникальный номер. Это устанавливается через item-> setData (0, 0, unique_number) ;. Второй столбец содержит флажок, установленный через item-> setCheckState (1, Qt :: Unchecked) ;. Пользователь может выбрать элементы, с которыми он хотел бы работать, и нажать кнопку. Слот для этой кнопки запускает цикл на отмеченных пунктах. В документации Qt приведен пример. Вы используете QTreeWidgetItemIterator.
QTreeWidgetItemIterator it(treeWidget);
while (*it) {
if ((*it)->text(0) == itemText)
(*it)->setSelected(true);
++it;
}
Это также говорит о том, что вы можете указать аргумент в конструкторе, чтобы перебирать только проверенные элементы. Флаг: QTreeWidgetItemIterator :: Проверен. Мой слегка настроенный цикл выглядит следующим образом:
QTreeWidgetItemIterator it(treeWidget, QTreeWidgetItemIterator::Checked);
while (*it)
{
QVariant w;
w = (*it)->data(0, 0);
std::cout << "Selected item # " << w.toInt() << "\n";
it++;
}
Этот код прекрасно скомпилируется, но не будет работать, когда вы действительно запустите программу. Он не печатает никаких значений.
Есть советы? Спасибо!