Автор: gpepsi 13.9.2011, 16:25
у в tray висит иконка. при двойном щелчке открывается форма.
Нужно отрисовать ее в правом нижнем углу экрана и запретить перетаскивание.
Можно ли это указать форме флагами или нужно отлавливать события перемещения и и отрисовывать самому в конкретном месте ?
Автор: ilyabvt 13.9.2011, 17:09
В правый нижний угол перемещать вручную через setGeometry. Запретить перемещение можно убрав рамку (указать соответствующий флаг), если рамка обязательна то переопределять moveEvent.
Автор: gpepsi 14.9.2011, 7:30
Цитата(ilyabvt @ 13.9.2011, 18:09)

В правый нижний угол перемещать вручную через setGeometry
это получилось
Цитата(ilyabvt @ 13.9.2011, 18:09)

апретить перемещение можно убрав рамку (указать соответствующий флаг),
не хотел
Цитата(ilyabvt @ 13.9.2011, 18:09)

если рамка обязательна то переопределять moveEvent.
выставляю в moveEvent setGeometry(event->oldPos) и ухожу в рекурсию
Автор: ssoft 14.9.2011, 13:03
Цитата(gpepsi @ 14.9.2011, 8:30)

выставляю в moveEvent setGeometry(event->oldPos) и ухожу в рекурсию

Все правильно
Цитата
Warning: Calling setGeometry() inside resizeEvent() or moveEvent() can lead to infinite recursion.
Можно попробовать установить виджету атрибут
setAttribute( Qt::WA_Moved, false );
Автор: gpepsi 14.9.2011, 13:18
Цитата(ssoft @ 14.9.2011, 14:03)

Можно попробовать установить виджету атрибут
не помогло
Автор: ilyabvt 14.9.2011, 14:38
Цитата
выставляю в moveEvent setGeometry(event->oldPos) и ухожу в рекурсию
Конечно уходите, т.к. при возврате в старую позицию у вас вызывается событие moveEvent которое имеет уже другую старую позицию.
Попробуйте через setGeometry передавать конкретные числа (ну где у вас там угол экрана).
Автор: Litkevich Yuriy 14.9.2011, 19:29
gpepsi, прочитай своё первое сообщение и объясни мне, почему тема называется "QMainWindow"