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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: StyleSheet в делегатах  (Прочитано 2610 раз)
Sasha
Гость
« : Декабрь 05, 2013, 21:18 »

Здравствуйте,

Для рисования ячеек таблиц я использую делегат, который наследую от QStyledItemDelegate. И в нём рисую вначале кнопку на всю ячейку, а потом то что в самой ячейке. Это более-менее работает.
Теперь я решил добавить возможность модификации интерфейса при помощи таблиц стилей (использую ф-ю qApp->setStyleSheet(...)) Интерфейс действительно меняется как надо, кроме этих самых делегатов - они рисуются так, как будто на них эта таблица стилей не влияет. Причём если я меняю интерфейс не таблицей стилей, а задаю класс стиля ф-ей qApp->setStyle(...), то этот стиль применяется и к делегатам.
Записан
Sasha
Гость
« Ответ #1 : Декабрь 05, 2013, 21:40 »

Нашёл ответы:
http://www.forum.crossplatform.ru/index.php?showtopic=5968
http://www.prog.org.ru/topic_12423_0.html

Там говорится, что в ф-ю drawControl нужно передавать виджет (я кстати пытался использовать ф-ю QStyleOption::initFrom куда передавал тоже указатель на виджет, но это не помогало), только пока не нашёл как же обойтись без создания виджета, не создавать же его прям в ф-ии paint и статическую не сделать т.к. таблица стилей может менятся,... хотя нет, статический виджет тоже работает, так что это пока на мой взгляд лучшее решение.
Записан
Sasha
Гость
« Ответ #2 : Декабрь 05, 2013, 22:21 »

Хотя со static-ом всё же глючит. Я сделал так, чтобы подсвечивалась ячейка таблицы над которой находится указатель мыши. Так вот в этом случае не всегда корректно работает со static-ом. В частности когда установлен стиль висты (я работаю под 8-ой), то при проведении мыши над ячейками они становятся белыми. Я подозреваю (и это, кстати возможно ключ к пониманию почему нужно передавать виджет в drawControl) что это связано с тем, что в этом стиле происходит не мгновенная смена подсвечена кнопка/не подсвечена, а постепенная. Т.е. виджет нужен, чтобы ему посылать какие-то события, взводить таймеры и т.д. Кстати это подтверждается тем, что при других стилях такого глюка не наблюдается.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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