Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Germiona от Апрель 09, 2008, 11:57



Название: Как изменить размер окна,не используя функцию resize()
Отправлено: Germiona от Апрель 09, 2008, 11:57
Можно ли изменить размер окна (виджета),не используя функции resize() и setGeometry() ?


Название: Re: Как изменить размер окна,не используя функцию resize()
Отправлено: pastor от Апрель 09, 2008, 12:37
А чем неустраивают resize() и setGeometry()?


Название: Re: Как изменить размер окна,не используя функцию resize()
Отправлено: Germiona от Апрель 09, 2008, 13:15
Измененить размеры окна нужно в теле функии resize() (т.е. произошло изменение размеров окна и затем размер нужно подкорректировать - получется опять resize() рекурсия и в итоге зацикливование) Как это избежать?


Название: Re: Как изменить размер окна,не используя функцию resize()
Отправлено: pastor от Апрель 09, 2008, 15:19
Измененить размеры окна нужно в теле функии resize()...

Вы имели ввиду в теле функции resizeEvent?


Название: Re: Как изменить размер окна,не используя функцию resize()
Отправлено: Germiona от Апрель 09, 2008, 15:24
Ой ,да конечно же resizeEvent()


Название: Re: Как изменить размер окна,не используя функцию resize()
Отправлено: pastor от Апрель 09, 2008, 18:03
Вы можите показать код resizeEvent? Возможно можно будет сделать как-то по другому


Название: Re: Как изменить размер окна,не используя функцию resize()
Отправлено: Germiona от Апрель 10, 2008, 10:25
Удалось избежать зацикливания благодаря spontaneous(). Спасибо  :)


Название: Re: Как изменить размер окна,не используя функцию resize()
Отправлено: ритт от Апрель 10, 2008, 13:39
всё-равно приведите код, пожалуйста

подобные вопросы уже возникали и будут возникать, если поиск по форуму ничего не даёт


Название: Re: Как изменить размер окна,не используя функцию resize()
Отправлено: Germiona от Апрель 10, 2008, 14:21
Изменение размеров окна пользователем и системные изменения размеров обрабатываются по-разному
Код:
void MainWindow::resizeEvent(QResizeEvent *e)
{
         if(e->spontaneous()) {
                                         ...
                                         resize(x,y);
                                       }
         else QWidget::resizeEvent(e);
}
Но вообще,получилось как-то не очень красиво.... :-\