Название: Корректировка позициии окна Отправлено: Куть от Июль 21, 2010, 11:57 Всем привет!
Хочется корректировать позицию окна относительно других окон в QMdiArea (http://doc.qt.nokia.com/4.6/qmdiarea.html) при перетаскивании мышкой. Для этого в классе-наследнике QMdiArea переопределил eventFilter (http://doc.qt.nokia.com/4.6/qobject.html#eventFilter), который ловит перемещения дочерних окон. В этом фильтре вычисляю новую позицию окна, вызываю move (http://doc.qt.nokia.com/4.6/qwidget.html#pos-prop) для него и возвращаю из eventFilter true, чтобы сообщение до окна не доходило. Сообщение действительно не доходит, но окно успевает отрисоваться в нескорректироавнной позиции, а затем черед долю секунды в скорректированной, получается никому не нужное дрожание окошка. Собственно вопрос: как избавится от первого рисования окна до корректировки его позиции? Название: Re: Корректировка позициии окна Отправлено: kibsoft от Июль 21, 2010, 18:21 А если сразу после перемещения вызвать слот update (или repaint на крайняк)?
Название: Re: Корректировка позициии окна Отправлено: Куть от Июль 22, 2010, 16:48 Ни update, ни repaint не помогают.
Приведу на всякий случай упрощенный кусок кода, чтобы было понятнее: Код: bool MyMdiArea::eventFilter(QObject *obj, QEvent *ev) Думаю, что всё это не помогает, т.к. окно уже отрисовалось до eventFilter в нескорректированной позиции. Или собирается отрисоваться независимо от eventFilter - хз. Название: Re: Корректировка позициии окна Отправлено: Куть от Июль 27, 2010, 15:08 Новая деталь: этот код работает, пока в одном из QMdiSubWindow не появляется дочерний QAxWidget. После этого начинаются дергания, причем не заканчиваются даже после закрытия окошка с QAxWidget.
Есть мысли? |