LINUX.ORG.RU

Анимация окна

 ,


0

1

Здравствуйте! Возник такой вопрос (опять же, контекст - разработка окружения рабочего стола). Есть у меня анимация при запуске панели. Реализую достаточно просто - от координаты x или y (в зависимости от расположения панели) отнимаю/прибавляю толщину панели - это получается начальная точка. А изначальное значение - конечная точка. И обычным QPropertyAnimation делаю анимацию параметра «pos». Но я один момент не учел. Я начал писать сервер уведомлений и туда такую же анимацию решил сделать. А щас, когда начал этот прототип тестить, заметил такую проблему (которую впрочем с самого начала стоило предполагать). Если уведомление справа сверху, то, соответственно, ширину этого уведомления я прибавляю к координате x, чтобы оно, как бы, выезжало с правой стороны экрана. Но у меня справа от основного монитора еще один монитор. И получается, что, естественно, окно появляется там, а затем уже передвигается на основной. Хотелось бы добиться такого поведения, чтобы окно было видно только на целевом мониторе, даже если его координата изначально задана за его пределами. Такое вообще возможно реализовать? Заранее спасибо.


Ответ на: комментарий от anonymous

а если есть экран сверху?)

thm
() автор топика
Ответ на: комментарий от aol

так это что дает? это просто получается QScreen, на котором находится окно в текущий момент времени. а мне надо, чтобы окно могло отображаться только на том экране, на котором я укажу. т.е., чтобы, тот кусок окна, который находится за пределами этого экрана, просто не отображался. В конце концов, в Mac OS X же уведомления как-то выезжают, и там нет такой проблемы :) Конечно, нечего сравнивать проприетарные API Mac OS X и Qt, но все же, значит, теоретически, это возможно?

thm
() автор топика
Ответ на: комментарий от thm

чтобы, тот кусок окна, который находится за пределами этого экрана, просто не отображался

А, ну, не.. это ты слишком многого хочешь ))

aol ★★★★★
()

Менять ширину фрейма…

anonymous
()

Хотелось бы добиться такого поведения, чтобы окно было видно только на целевом мониторе, даже если его координата изначально задана за его пределами. Такое вообще возможно реализовать?

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

sigurd ★★★★★
()
Ответ на: комментарий от sigurd

Был бы рад так и сделать, но виджеты (иконка приложения, название приложения, текст уведомления) же расположены на Layout’е. Получается, что во время анимации будет меняться их размер и расположение на форме

thm
() автор топика
Ответ на: комментарий от thm

Расположи лэйаут на виджете, размер которого будет фиксированным во время анимации.

unC0Rr ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.