Russian Qt Forum
Ноябрь 16, 2024, 08:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Максимизированная форма  (Прочитано 5898 раз)
andrew.k
Гость
« : Декабрь 27, 2010, 19:18 »

Как сделать, чтобы форма QMainWindow при создании была сразу максимизирована?
Т.е. например, уже в конструкторе.
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Декабрь 27, 2010, 19:34 »

void QWidget::showMaximized () [slot]
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
andrew.k
Гость
« Ответ #2 : Декабрь 27, 2010, 19:37 »

я же четко написал "например, уже в конструкторе".
ShowMaximized сначала отображает форму с текущим размером, а потом асинхронно ее максимизирует оконный манагер.
Мне нужно, чтобы она сразу создавалась максимального размера.
Записан
Fat-Zer
Гость
« Ответ #3 : Декабрь 27, 2010, 20:31 »

wnd.setWindowState(Qt::WindowMaximized);
wnd.show();
Записан
andrew.k
Гость
« Ответ #4 : Декабрь 28, 2010, 16:05 »

wnd.setWindowState(Qt::WindowMaximized);
wnd.show();
qDebug() << "size: " << size();
Проверь сам этот код. Размер не будет максимальным.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Декабрь 28, 2010, 16:22 »

Цитировать
ShowMaximized сначала отображает форму с текущим размером, а потом асинхронно ее максимизирует оконный манагер.
Мне нужно, чтобы она сразу создавалась максимального размера.
Вы же сами сказали "асинхронно ее максимизирует оконный манагер"...
Единственный вариант - в конструкторе организовать локальный eventLoop и ждать когда WM растянет окно, что ни есть хорошо.
Записан

Qt 5.11/4.8.7 (X11/Win)
ufna
Гость
« Ответ #6 : Декабрь 28, 2010, 18:10 »

а) узнать размеры рабочего стола
б) setSize(этот размер)
в) show()

имхо так.
Записан
andrew.k
Гость
« Ответ #7 : Декабрь 28, 2010, 18:21 »

да. ресайзить по размеру экрана, понятно можно, но так не интересно Улыбающийся.
в принципе я решил проблему по-другому, конкретно в моем случае решение работает.
я просто задал руками размер формы по размеру экрана (width, height)
Тогда оно создается сразу нужного размера, а затем асинхронно переходит в состояние maximized, что мне уже не важно.
Мне собственно нужно было скриншот его сделать, перед тем как отобразить.

Но не смотря на то, что решение найдено, как сделать локальный эвентлуп?
Я как-то пробовал немного, ничего не получилось. И забил.
Записан
ufna
Гость
« Ответ #8 : Декабрь 28, 2010, 18:39 »

Разницы между задал размеры формы или сделал resize() в конструкторе нету кстати :0)

Записан
andrew.k
Гость
« Ответ #9 : Декабрь 28, 2010, 19:00 »

так я не говорил, что есть разница.
Записан
alexman
Гость
« Ответ #10 : Декабрь 28, 2010, 23:58 »

Попробуй переопределить void QWidget::showEvent ( QShowEvent * event ) и вызвать там setWindowState( Qt::WindowMaximized );
Записан
andrew.k
Гость
« Ответ #11 : Декабрь 29, 2010, 00:54 »

я переопределял showMaximized. в нем делал setWindowState.
Это не сработало. Думаю нет разницы, между showEvent и showMaximized, но попробую завтра на всякий случай.
Записан
alexman
Гость
« Ответ #12 : Декабрь 29, 2010, 07:09 »

под виндой работает 100%
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.099 секунд. Запросов: 23.