Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: kurbigor от Декабрь 11, 2007, 12:32



Название: showMaximized не отрабатывает
Отправлено: kurbigor от Декабрь 11, 2007, 12:32
Есть такая ОС: МСВС (по сути -тот же Linux). Метод showMaximized для основного окна приложения не отрабатывает. Прочел, что в некоторых системах это действительно бывает, и надо как-то выкручиваться.
Никто не знает ссылку, где об этом можно прочесть подробней? (лучше на русском :)).


Название: Re: showMaximized не отрабатывает
Отправлено: Emc от Декабрь 11, 2007, 13:50
вариант номер 1: при закрытие программы сохраняешь размер - QMainWindow::saveState
при открытие устанавливаешь - QMainWindow::restoreState ну и двигать в левый угол


Название: Re: showMaximized не отрабатывает
Отправлено: kurbigor от Декабрь 12, 2007, 10:24
to Emc
Т.е. ты предлагаешь открыть, закрыть и снова открыть?


Название: Re: showMaximized не отрабатывает
Отправлено: Emc от Декабрь 12, 2007, 11:01
я так понимаю кнопка развернуть окно все таки работает, поэтому проблема только при запуске программы
и предлагаю сохранять состояние окна в момент закрытия программы и восстанавливать при запуске.
Сохранять можно в файл через QSettings хотя ты можешь зашить byteArray в код программы, но тогда корректно будет работать только на твоем компе


Название: Re: showMaximized не отрабатывает
Отправлено: kurbigor от Декабрь 12, 2007, 11:55
Да, кнопка развернуть окно работает. После запуска, если по ней щелкнуть, окно "доразворачивается" полностью (а так оно "недовернуто" слегка). Как бы этот дополнительный щёлк сделать программным образом, чтобы не заставлять делать это пользователя вручную?
Читал где-то, что надо открыть, запомнить координаты и ещё раз открыть, но где бы об этом подробнее прочесть? А восстанавливать состояние окна в момент закрытия программы не совсем годится, т.к. при следующем запуске оно может быть несколько другим в зависимости от предыдущего сеанса работы.


Название: Re: showMaximized не отрабатывает
Отправлено: Alex03 от Декабрь 12, 2007, 12:59
Ещё как вариант - окно совсем без обрамления в координаты 0,0 и размером с десктоп.

PS А что там за WindowManager? Он там один единственный?


Название: Re: showMaximized не отрабатывает
Отправлено: Вячеслав от Декабрь 12, 2007, 13:03
Тама elk .....бнутый на голову :( И к сожалению фиг помнеяешь на нормальный.....

По теме : А просто узнать размер десктопа и сказать resize и move(0,0) ?


Название: Re: showMaximized не отрабатывает
Отправлено: Alex03 от Декабрь 12, 2007, 17:03
kurbigor попробуй вызвать showMaximized по какомунить событию (типа пункта в меню).
Если будет нормально, то могу ещё предложить извращённый способ - вызывать его через Х мс после отображения (Х=500мс думаю достаточно почти всегда).


Название: Re: showMaximized не отрабатывает
Отправлено: kurbigor от Декабрь 13, 2007, 10:43
elk,elk... он самый... (или она?)
Спасибо. Проверил всё по вашим советам.
showMaximized, похоже, не работает в принципе. Т.е. он отрабатывает, но, видимо, так, как вы предлагаете: именно resize на весь экран (при этом нижняя часть залезает под полоску меню, в этом вся проблема, а кнопка "Развернуть окно" остаётся большим прямоугольником, т.е. окно как бы всё же не развёрнуто). Самое досадное, что если по кнопке щёлкнуть, окно разворачивается как надо. Я пытался как-то сымитировать этот щёлк программно, но не удалось. Может, кто занимался имитацией клика мышью по управляющим элементам окна, похоже, я точку не смог правильно вычислить.



Название: Re: showMaximized не отрабатывает
Отправлено: Emc от Декабрь 13, 2007, 11:25
управлением окна занимается elk а не qt -- так что сымитировать это не получиться


Название: Re: showMaximized не отрабатывает
Отправлено: kurbigor от Декабрь 13, 2007, 17:57
Что же получается?
Доктор сказал: "В морг" ?
 :-\


Название: Re: showMaximized не отрабатывает
Отправлено: Steven_Orko от Декабрь 17, 2007, 10:50
Что же получается?
Доктор сказал: "В морг" ?
 :-\
Можно попробовать еще один разряд )))
Сделай вот что.

Узнай у корневого окна свойство _NET_WORKAREA (Возможно, я ошибаюсь с его написанием, но звучит примерно так).
В этом свойстве записана, как ты уже догадываешься, рабочая область, без панели ELK. Узнаешь ее и resize свое окно до  таких размеров. Там уже посмотри, куда его лучше подвинуть, чтобы правдоподобно было.

Насчет свойств и атрибутов окон читай мой пост в другой ветке или X Window System Reference.


Название: Re: showMaximized не отрабатывает
Отправлено: remach от Март 11, 2008, 10:38
Скорее это проблема QT 3.3. В моих приложениях под Win32 showMaximized ведет себя также, как и под elk. Если смотреть примеры, там тоже нет ни одного приложения, с нормальным открыванием во весь экран. Даже дизайнер открывается не в режиме Maximized.