Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ QMainWindow

Автор: 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"

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)