Обозначить переключатель QTreeWidgetItem переключен

Как мне проверить, установлен ли флажок или нет? (В QTreeWidget) показывает, как получить статус флажка для элемента qtreewidget. Используя этот метод с сигналом для itemClicked в дереве, я могу запросить, отмечен ли выбранный элемент или нет. Тем не менее, мне нужно отслеживать этот элемент, чтобы увидеть, был ли он ранее проверен или нет.

Есть ли способ узнать, что QTreeWidgetItem, который может находиться на разных уровнях от родительских элементов, имеет переключаемый флажок, без создания подкласса для него?

Как примечание, есть ли конкретная причина, по которой переключаемый метод не присоединен к QTreeWidgetItem в QT?

1 ответ

Решение

itemClicked Сигнал не является хорошим выбором для обработки флажков Treewidget.

С одной стороны, он дает ложные срабатывания, когда не нажимает на чекбокс часть элемента; и с другой стороны, он дает ложные отрицания, когда флажок переключается с помощью клавиатуры.

Я думаю, что лучшее, что можно сделать с существующими сигналами, это использовать itemChanged. Это зарегистрирует все изменения состояния флажка, сделанные с помощью клавиатуры и мыши. Тем не менее, это не идеальное общее решение, потому что оно будет давать ложные срабатывания всякий раз, когда изменяются любые другие данные элемента (например, текст, шрифт, цвет фона и т. Д.). Так что вам нужно будет заблокировать itemChanged сигнал всякий раз, когда эти другие типы изменений были сделаны.

Другие вопросы по тегам