Название: Дефолтовые размеры MainWindow ограничиваются 860x710 Отправлено: Eugene Efremov от Ноябрь 27, 2008, 04:43 Собственно, subj. Если задать в sizeHint достаточно большие значения, окно упирается в размер 860x710 (что существенно меньше размера экрана) и дальше расти не желает.
Вызов resize позволяет увеличить окно за пределы этих значений, равно как и манипуляции мышкой в процессе работы программы. Установка QSizePolicy::MinimumExpanding также заставляет ее превысить этот предел, но при этом заданный размер вообще нельзя уменьшить — что тоже не годится. Вопрос. Как ей объяснить, что покуда место на экране есть — надо по умолчанию рисовать окно таких размеров, какие указаны в sizeHint? P.S. w2k3, Qt 4.4.1. Название: Re: Дефолтовые размеры MainWindow ограничиваются 860x710 Отправлено: Rcus от Ноябрь 27, 2008, 05:49 А если выставить QSizePolicy::Expanding то еще и уменьшать окно можно будет
(QSizePolicy::MinimumExpanding == GrowFlag | ExpandFlag, QSizePolicy::Expanding == GrowFlag | ShrinkFlag | ExpandFlag). только вот одного не пойму, как для виджета можно выставить sizeHint напрямую. Название: Re: Дефолтовые размеры MainWindow ограничиваются 860x710 Отправлено: Eugene Efremov от Ноябрь 27, 2008, 14:20 А если выставить QSizePolicy::Expanding то еще и уменьшать окно можно будет (QSizePolicy::MinimumExpanding == GrowFlag | ExpandFlag, QSizePolicy::Expanding == GrowFlag | ShrinkFlag | ExpandFlag). QSizePolicy::Expanding пробовал, не помогает. Т.е. — по прежнему 860x710, а больше — только ручками. только вот одного не пойму, как для виджета можно выставить sizeHint напрямую. ??? Переопределяя соотв. ф-цию, конечно: Код
Вот только проблема в том, что 1000х750 оно от этого не становится... Название: Re: Дефолтовые размеры MainWindow ограничиваются 860x710 Отправлено: Eugene Efremov от Ноябрь 27, 2008, 18:00 Значит так. Вот тестовый код.
testsize.h: Код
testsize.cpp: Код
Это рисует окно размером 860x710 и выводит в консоль такое вот сообщение: «x = 640, y = 480». :( Если раскомментировать строчку, помеченную как хак, все работает нормально — сообщение «x = 1000, y = 750» и размеры окна примерно 1010х780 (за счет полей/заголовка). Но я не уверен, что подобный хак приемлем и не вызовет других проблем. И вообще все это очень похоже на баг Qt. А посему. Просьба всем, кто это читает, откомпилировать данный код на других (отличных от 4.4.1) версиях Qt, дабы проверить, не изменится ли сие поведение. P.S. (админам форума): Если я прав, и это действительно баг Qt, тему, наверное, лучше перенести из новичкового форума в раздел GUI (думаю, способы борьбы с багами интересны не только начинающим)... Название: Re: Дефолтовые размеры MainWindow ограничиваются 860x710 Отправлено: Rcus от Ноябрь 27, 2008, 21:34 проверил, если после show() поставить второй qDebug и поставить sizeHint(1600,1250) то выводит
Цитировать x=640,y=480 1120/1680 == 700/1050 == 2/3x=1120,y=700 Название: Re: Дефолтовые размеры MainWindow ограничиваются 860x710 Отправлено: Eugene Efremov от Ноябрь 27, 2008, 22:01 проверил, если после show() поставить второй qDebug и поставить sizeHint(1600,1250) то выводит Цитировать x=640,y=480 1120/1680 == 700/1050 == 2/3x=1120,y=700 Так... У меня после show выводит «x = 853 , y = 682». Изменение sizeHint, если там стоит больше этой величины, роли не играет. Разрешение экрана — 1280х1024. Таки действительно — 2/3 от размера экрана. (риторический вопрос) Ну и что с этим делать? Название: Re: Дефолтовые размеры MainWindow ограничиваются 860x710 Отправлено: Rcus от Ноябрь 27, 2008, 22:24 /*shrugs*/
можно в конструкторе формы напрямую указать координаты и размер через setGeometry, а параметры рассчитать на основе QDesktopWidget::availableGeometry |