Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Bepec от Апрель 30, 2015, 19:43



Название: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Апрель 30, 2015, 19:43
Собственно охота сделать выпадающий виджет.
Аналог - http://www.youtube.com/watch?v=czFziUMEhiw#t=284
Интересует именно технология.
Кажется, что это просто, но на деле я не вижу куда сначала тыкаться.

Вот есть виджет, он занимает определённое место и имеет отрисовку.
Теперь нам надо, не изменяя занимаемое им место (чтобы компоновщик не перекорёживало) сделать анимацию выпадения.  

Как бы это организовать?

PS что то в уме крутится, но конкретную идею выцепить не могу.


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Old от Апрель 30, 2015, 19:45
В каком месте на видео искать этот виджет?


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Апрель 30, 2015, 19:58
на ссылку тыкаешь, открывается ютуб и перематывается автоматом на 4:44 и та дам - показ выпадающего и западающего виджета на цепях.

PS перемотка не срабатывает если тыкать на плеер сразу, надо чуть подождать  :)

PPS собственно это меню варкрафта 3 :)


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Old от Апрель 30, 2015, 20:00
Ну так виджет может находится вне видимой области родителя. Если плавно изменять координаты, должен получиться такой эффект.


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Апрель 30, 2015, 20:04
Это кажется простым, если он там один.
Всё усложняется, если он находится с другими виджетами.
Изменение координат перекорёжит остальные виджеты.
Тем более что в уме имеет место многоуровневый виджет аля "выпадает первый, выпадает второй, выпадает третий".

Т.е. если уточнять, то по идее необходимо сделать иллюзию выпадения без сдвига координат.

Я понимаю, что тут надо с отрисовкой что то делать, но что.


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Old от Апрель 30, 2015, 20:31
Выпадающий виджет не нужно помещать в layout с другими виджетами и управлять его положением в ручную.


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Апрель 30, 2015, 20:39
Вы говорите как сделать легче, а я прошу именно такой виджет, который не зависит от положения на экране и может быть запихнут в компоновщик.

Но даже это не решает проблему выпадения, если он "ниже" элемента, из которого должен выпадать и тот не является его родителем.


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: gil9red от Апрель 30, 2015, 22:39
Я бы, наверное, попробовал через графическую сцену сделать :)

/offtop
варкрафт 3, дота :)


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Апрель 30, 2015, 23:36
Да не суть где, суть в том, как сделать :D
Алгоритм потом куда угодно можно прикрутить будет :)


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: gil9red от Май 01, 2015, 00:23
Да не суть где, суть в том, как сделать :D
Алгоритм потом куда угодно можно прикрутить будет :)

Ну ограничение области сцены и анимация цепей и меню "на них" :)


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Май 01, 2015, 01:47
Ну т.е. на 3 выпадающих виджета с разными уровнями "выпадания" нужно 3 сцены? :D


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Igors от Май 01, 2015, 08:41
Вот есть виджет, он занимает определённое место и имеет отрисовку.
Теперь нам надо, не изменяя занимаемое им место (чтобы компоновщик не перекорёживало) сделать анимацию выпадения.  
На видео он просто рисуется поверх. Если это нужно в лайауте, то вставляете неизменяемого родителя а в нем уже крутите анимированного чайлда.

Да, и вообще: подражателей бьют  :)


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Май 01, 2015, 09:16
Тут скорее подражатели все мы - вывески на цепях были задолго до нашего рождения.

Т.е. как я понял готового решения нет, алгоритма никто представить не может, кроме как одиночного виджета с родителем :)


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Igors от Май 01, 2015, 09:36
Т.е. как я понял готового решения нет, алгоритма никто представить не может, кроме как одиночного виджета с родителем :)
По классике:
Цитировать
Я думал тут умеют решать а здесь такие же бараны как я  :)
О каком алгоритме Вы говорите? Как будут двигаться цепи? Ну как надо так и двигайте, здесь другого нет, все равно их придется рисовать


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Май 01, 2015, 12:39
Алгоритм работы, а не алгоритм рисовки.
Точнее алгоритм работы включает в себя алгоритм рисовки.

Именно этот вопрос я задаю - нужен алгоритм работы. Понятно что оно выпадает, но т.е. оно на тот момент должно уже быть отрисовано, при чем этот рисунок надо двигать вниз как то. ну да не суть, я и не ожидал что дадут ответ на вопрос, больше ждал готовых решений, но их увы нет :D


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Igors от Май 01, 2015, 12:48
...больше ждал готовых решений..
Ну да, "в духе этого форума" :) Наверное я так и не понял. Напр чем не устраивает простецкая QScrollArea ?


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: __Heaven__ от Май 01, 2015, 13:08
А в примерах Qt подобного не было? Могу путать с qml.


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Май 01, 2015, 13:16
To Igors повторюсь - 3 виджета, которые должны выпадать с разных позиций, расположенные на одном виджете в компоновщике :)

не спорю, вариант с родителями вполне возможен, но очень ммм... костылен. на каждый виджет придётся создавать своего родителя.

PS ммм... Не видел в примерах подобного. Если сможете потратить время и припомнить где видели, буду благодарен :)


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: kuzulis от Май 01, 2015, 21:28
QStackedWidget + QAnimation ?

PS: А проще и быстрее все на QML наклепать..


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Май 01, 2015, 22:15
Возможно проще и быстрее, но сложнее если его не знаешь :D


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: kuzulis от Май 01, 2015, 22:40
О, кстати, посмотри как в демках сделано: http://www.youtube.com/watch?v=yblh9ivfK30 може это то что надо.


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Bepec от Май 03, 2015, 12:16
Спасибо за наводку, посмотрю как там сделано. но после праздников :)


Название: Re: Выпадающий виджет, как бы сделать и есть ли решения?
Отправлено: Racheengel от Май 06, 2015, 01:08
http://qt-apps.org/content/show.php/QSint+Widgets+Collection?content=162296

QSint::ActionGroup делает grabWidget и по таймеру анимирует полученную картинку, со слайдингом и сменой прозрачности. При разворачивании по окончании анимации делает видимым реальный виджет, при сворачивании последовательность наоборот.