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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [4.1.1] Эффект анимации с использованием QStyle  (Прочитано 8640 раз)
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« : Сентябрь 27, 2008, 21:25 »

Добрый вечер, али день...
Как известно, внешний вид виджетов можно менять переопределяя класс QStyle, вернее какой-нибудь из его потомков: QБлаБлаБлаStyle. Ну здесь всё прозрачно... нуторно, да, ну и фиг с ним  Показает язык ...
Посмотрим на функцию
void drawPrimitive (PrimitiveElement element,
  const QStyleOption* option,
  QPainter* painter,
  const QWidget* widget = 0
)
В Ассистенте упоминается, что наличие в аргументе этой функции указателя на QWidget даёт возможность создать анимационный эффект, например при наведении мыши на виджет он плавно изменяет цвет или, ... ну мало ли на что фантазии хватит у проЗжённых коаксиальным кабелем заказчиков...
Так вот, Господа, собственно вопрос: как это можно реализовать с использованием только наследование от QStyle ?   
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Сентябрь 28, 2008, 15:06 »

В Ассистенте упоминается, что наличие в аргументе этой функции указателя на QWidget даёт возможность создать анимационный эффект

А вы можите привести цитату с Ассистанта, где об этом упоминаеться?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Sergeich
Гость
« Ответ #2 : Сентябрь 28, 2008, 15:18 »

В Ассистенте упоминается, что наличие в аргументе этой функции указателя на QWidget даёт возможность создать анимационный эффект

А вы можите привести цитату с Ассистанта, где об этом упоминаеться?
Цитировать
QStyle gets all the information it needs to render the graphical element from QStyleOption. The widget is passed as the last argument in case the style needs it to perform special effects (such as animated default buttons on Mac OS X), but it isn't mandatory. In fact, you can use QStyle to draw on any paint device, not just widgets, by setting the QPainter properly.
Записан
Sergeich
Гость
« Ответ #3 : Сентябрь 28, 2008, 15:31 »

При анимациии нужно создать таймер для конкретного виджета, и перерисовать его по этому таймеру, для этого он собственно и передается в параметрах.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #4 : Сентябрь 28, 2008, 20:28 »

Спасибо.
Сейчас я вижу два возможных решения: одно не хорошее, а другое естественное... Смеющийся
В любом случае придётся переопределять виджит. Если изначально последний не предрасположен к анимации, то простым QStyle' м не обойтись. Злой
Жаль...

Ладно, пора пить пиво и слушать норвежский симфо-блэк  Целующий

Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Sergeich
Гость
« Ответ #5 : Сентябрь 29, 2008, 07:38 »

Спасибо.
Сейчас я вижу два возможных решения: одно не хорошее, а другое естественное... Смеющийся
В любом случае придётся переопределять виджит. Если изначально последний не предрасположен к анимации, то простым QStyle' м не обойтись. Злой
Жаль...

Ладно, пора пить пиво и слушать норвежский симфо-блэк  Целующий
Все можно сделать без переопределения виджетов: стиль - наследник объекта => можно определить в нем событийный фильтр и поставить его на анимируемые виджеты
Записан
ритт
Гость
« Ответ #6 : Сентябрь 29, 2008, 11:47 »

можно заглянуть в код стиля bespin(cloudcity) - там множество анимированных виджетов (менюшки, табы, скроллы, ...)
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #7 : Сентябрь 29, 2008, 16:44 »


Все можно сделать без переопределения виджетов: стиль - наследник объекта => можно определить в нем событийный фильтр и поставить его на анимируемые виджеты


Спасибо, надо будет в этом разобраться... 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #8 : Сентябрь 29, 2008, 16:45 »

можно заглянуть в код стиля bespin(cloudcity) - там множество анимированных виджетов (менюшки, табы, скроллы, ...)

Ну да... Это хорошо когда он есть, а у меня его нЭт  Непонимающий. Вы не выложите?
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
ритт
Гость
« Ответ #9 : Сентябрь 29, 2008, 17:00 »

http://www.kde-look.org/content/show.php/Bespin?content=63928
но это старые сорцы - для ознакомления хватит, но работает ужасно криво. новые сорцы под свиньей.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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