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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeWidget и выделение определнных Item-ов  (Прочитано 4709 раз)
smilik
Гость
« : Октябрь 29, 2015, 10:29 »

Добрый день!!! Мне нужно чтобы в дереве QTreeWidget можно было бы выделять только определенные Item-ы. Т.е. при листании с клавиатуры(вверх-вниз) строчки перепрыгивали бы через ненужные Item-ы. Как такое лучше реализовать??
Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #1 : Октябрь 29, 2015, 10:45 »

Попробуйте поиграться флагами, а конкретно Qt::ItemIsEnabled:
Код
C++ (Qt)
Qt::ItemFlags QTreeWidgetItem::flags() const;
void QTreeWidgetItem::setFlags(Qt::ItemFlags flags)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Октябрь 29, 2015, 11:10 »

Попробуйте поиграться флагами, а конкретно Qt::ItemIsEnabled:
Может еще лучше Qt::ItemIsSelectable
Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #3 : Октябрь 29, 2015, 11:16 »

Может еще лучше Qt::ItemIsSelectable
На сколько я помню, item с таким флагом не может быть выбран, но курсор на нем стоять может
Записан
smilik
Гость
« Ответ #4 : Октябрь 29, 2015, 13:46 »

Спасибо за ответы. Но насколько я понимаю по умолчанию у всех item-ов стоит флаг Qt::ItemIsEnabled ... а как его убрать и сделать все item-ы недоступнимы?
Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #5 : Октябрь 29, 2015, 14:00 »

Код
C++ (Qt)
item.setFlag(0); // убрать все флаги
или
Код
C++ (Qt)
item.setFlag(item.flag() & (~Qt::ItemIsEnabled)); // убрать конкретный флаг
Записан
smilik
Гость
« Ответ #6 : Октябрь 29, 2015, 14:49 »

спасибо большое!!! Все получилось  Улыбающийся Улыбающийся Улыбающийся
Записан
smilik
Гость
« Ответ #7 : Октябрь 30, 2015, 11:11 »

Вроде с флагами все понятно, но есть такой нюанс ... когда я задаю флаги конкретному Item-у, это распространяется на дочерние item-ы ... причем если я снимаю флаг Qt::ItemIsEnabled с родительского элемента, я не могу его поставить на дочерний элемент (т.е. дочерний элемент становится активным только если я делаю активным родительский элемент) ... а мне нужно чтобы активны были дочерние элементы, а родительские не активны. Можно ли как-то снять флаг Qt::ItemIsEnabled только с родительского элемента
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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