Russian Qt Forum
Сентябрь 23, 2024, 19:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeWidget: проблема управлением чекбоксами  (Прочитано 3056 раз)
voltron
Гость
« : Ноябрь 27, 2011, 14:14 »

Есть QTreeWidget, в котором отображается древовидная структура, состоящая из «папок» и «элементов» причем «папки» могут быть вложенными. У каждого QTreeWidgetItem'a есть чекбокс для включения/выключения видимости. Проблема в том, что снятие чекбокса к группы приводит к изменению состояния переключателей всех вложенных элементов.

Например, имеем группу с 3мя дочерними элементами.  Если сбросить чекбоксы у всех дочерних элементов, кроме одного, то чекбокс самой группы будет затененный. Теперь, если изменить состояние чекбокса  группы (например, выключить) то соответствующим образом изменится состояние чекбоксов дочерних элементов (они тоже станут выключенными). И при включении чекбокса группы, все дочерные элементы тоже станут включеными.

Можно ли как-то изменить/обойти такое поведение? Смотрел в Assistant, искал по форуму, но ничего подходящего не нашел.
Записан
Wlad_C
Гость
« Ответ #1 : Ноябрь 28, 2011, 12:50 »

Вместо флага:
Qt::ItemIsTristate
установить флаг:
Qt::ItemIsUserCheckable

В этом случае, флаги устанавливаются независимо.
Записан
voltron
Гость
« Ответ #2 : Ноябрь 29, 2011, 16:32 »

Спасибо.

Проверил код, устанавливается как раз флаг Qt::ItemIsUserCheckable.
Код:
setFlags( Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable );
setCheckState( 0, Qt::Checked );
Похоже, дело не в этом
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 20.