Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: andrew.k от Декабрь 27, 2010, 19:18



Название: Максимизированная форма
Отправлено: andrew.k от Декабрь 27, 2010, 19:18
Как сделать, чтобы форма QMainWindow при создании была сразу максимизирована?
Т.е. например, уже в конструкторе.


Название: Re: Максимизированная форма
Отправлено: kibsoft от Декабрь 27, 2010, 19:34
void QWidget::showMaximized () [slot]


Название: Re: Максимизированная форма
Отправлено: andrew.k от Декабрь 27, 2010, 19:37
я же четко написал "например, уже в конструкторе".
ShowMaximized сначала отображает форму с текущим размером, а потом асинхронно ее максимизирует оконный манагер.
Мне нужно, чтобы она сразу создавалась максимального размера.


Название: Re: Максимизированная форма
Отправлено: Fat-Zer от Декабрь 27, 2010, 20:31
wnd.setWindowState(Qt::WindowMaximized);
wnd.show();


Название: Re: Максимизированная форма
Отправлено: andrew.k от Декабрь 28, 2010, 16:05
wnd.setWindowState(Qt::WindowMaximized);
wnd.show();
qDebug() << "size: " << size();
Проверь сам этот код. Размер не будет максимальным.


Название: Re: Максимизированная форма
Отправлено: GreatSnake от Декабрь 28, 2010, 16:22
Цитировать
ShowMaximized сначала отображает форму с текущим размером, а потом асинхронно ее максимизирует оконный манагер.
Мне нужно, чтобы она сразу создавалась максимального размера.
Вы же сами сказали "асинхронно ее максимизирует оконный манагер"...
Единственный вариант - в конструкторе организовать локальный eventLoop и ждать когда WM растянет окно, что ни есть хорошо.


Название: Re: Максимизированная форма
Отправлено: ufna от Декабрь 28, 2010, 18:10
а) узнать размеры рабочего стола
б) setSize(этот размер)
в) show()

имхо так.


Название: Re: Максимизированная форма
Отправлено: andrew.k от Декабрь 28, 2010, 18:21
да. ресайзить по размеру экрана, понятно можно, но так не интересно :).
в принципе я решил проблему по-другому, конкретно в моем случае решение работает.
я просто задал руками размер формы по размеру экрана (width, height)
Тогда оно создается сразу нужного размера, а затем асинхронно переходит в состояние maximized, что мне уже не важно.
Мне собственно нужно было скриншот его сделать, перед тем как отобразить.

Но не смотря на то, что решение найдено, как сделать локальный эвентлуп?
Я как-то пробовал немного, ничего не получилось. И забил.


Название: Re: Максимизированная форма
Отправлено: ufna от Декабрь 28, 2010, 18:39
Разницы между задал размеры формы или сделал resize() в конструкторе нету кстати :0)



Название: Re: Максимизированная форма
Отправлено: andrew.k от Декабрь 28, 2010, 19:00
так я не говорил, что есть разница.


Название: Re: Максимизированная форма
Отправлено: alexman от Декабрь 28, 2010, 23:58
Попробуй переопределить void QWidget::showEvent ( QShowEvent * event ) и вызвать там setWindowState( Qt::WindowMaximized );


Название: Re: Максимизированная форма
Отправлено: andrew.k от Декабрь 29, 2010, 00:54
я переопределял showMaximized. в нем делал setWindowState.
Это не сработало. Думаю нет разницы, между showEvent и showMaximized, но попробую завтра на всякий случай.


Название: Re: Максимизированная форма
Отправлено: alexman от Декабрь 29, 2010, 07:09
под виндой работает 100%