Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: drsm от Февраля 18, 2009, 14:24



Название: запретить окну spontaneous() Resize/Move
Отправлено: drsm от Февраля 18, 2009, 14:24
есть QMainWindow, над ним висит QDockWidget который фильтрует события главного окна и динамически изменяет за ним положение и размер.
вопрос следующий, какие события у доквиджета мне нужно отфильтровать чтобы запретить его перемещение/ресайз мышью, те пользователем?


Название: Re: запретить окну spontaneous() Resize/Move
Отправлено: Dendy от Февраля 18, 2009, 14:45
Я такое делал убирая у дока заголовок окна как таковой. А по другому оконный менеджер тягать его не сможет. Для иксов можно попробовать установить Qt::X11BypassWindowManagerHint. Поиграться с другими флагами.


Название: Re: запретить окну spontaneous() Resize/Move
Отправлено: drsm от Февраля 18, 2009, 16:24
спасибо, move поборол так:
dock->setTitleBarWidget(new QWidget(parent));

а resize так
Код
C++ (Qt)
void topLevelChanged_Signal_Handler(bool isFloating)
{
if (isFloating) {
QRect r = getGeometryFromParent();
setGeometry(r);
setFixedSize(r.width(), r.height());
} else {
setMinimumSize(QSize(0, 0));
setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
}
}

осталось только как-то убрать мышиные хинты при наведении на рамку.
подскажите плс.


Название: Re: запретить окну spontaneous() Resize/Move
Отправлено: Kolobok от Февраля 18, 2009, 21:12
Код:
layout()->setSizeConstraint( QLayout::SetFixedSize );


Название: Re: запретить окну spontaneous() Resize/Move
Отправлено: drsm от Февраля 19, 2009, 09:58
Код:
layout()->setSizeConstraint( QLayout::SetFixedSize );

это неподходит, тк тогда через setGeometry размер не ставится.
да и курсор все равно при наведении на фрейм меняется (.