Название: QMainWindow не восстанавливает размеры centralWidget'a Отправлено: babutta от Январь 21, 2010, 11:37 Добрый день.
Есть два приложения (Qt 4.5.1, VS 2005). Оба приложения построены одинаково: главное окно с QDockWidget'ами, QToolBar'ами... пользуюсь методами главного окна saveState() и restoreState(). одно приложение восстанавливает свое состояние нормально, а во втором доквиджеты притесняют центральный виджет. Т.е. получается центральный виджет слева и справа сжат до минимальных размеров доквиджетами. Причем, когда я закрываю доквиджеты слева и справа и оставляю только доквиджет снизу, то при перезапуске приложения центральный виджет сжат по вертикали нижним доквиджетом до минимальных размеров... SizePolicy у доквиджетов не настраивал, ничего такого не крутил ни в одном приложении. что может быть? как добиться нормального восстановления состояния главного окна? Название: Re: QMainWindow не восстанавливает размеры centralWidget'a Отправлено: fsMark от Январь 21, 2010, 13:24 Чтобы нормально работали saveState() и restoreState().. надо чтобы для всех обьектов которые сохраняются и восстанавливаются, были заданны имена (в дизанере например :))
Название: Re: QMainWindow не восстанавливает размеры centralWidget'a Отправлено: babutta от Январь 21, 2010, 13:58 имена объектов заданы конечно (через setObjectName()) для всех уникальные, иначе бы этот механизм вообще не работал.
а он работает, только не так как должен =( Название: Re: QMainWindow не восстанавливает размеры centralWidget'a Отправлено: babutta от Январь 26, 2010, 14:08 В общем проблема решена... не без посторонних внимательных глаз =)
Ошибка была в том, что я пользовался конструктором и деструктором для восстановления и сохранения состояния соответственно... так вот восстановление состояния на конструкторе было ошибкой... как только перешел на closeEvent() и showEvent() так все и заработало =) Название: Re: QMainWindow не восстанавливает размеры centralWidget'a Отправлено: babutta от Май 27, 2010, 09:08 вот еще раз пришлось столкнуться с этим же... забыл как боролся и в поиске увидел свой пост, нашел свою ошибку и решил поправить =)
После внимательного прочтения ( целого абзаца! =) ) документации оказалось, что никто и не обещал восстановления геометрии главного окна при вызове метода restoreState(). В общем не важно где происходит сохранение в деструкторе или в closeEvent(), как, думаю, не важно и с восстановлением... Важно сохранять и восстанавливать (если это, конечно, требуется) и геометрию и состояние отдельно! Вот так все работает: Код: ActionTest::ActionTest(QWidget *parent, Qt::WFlags flags) |