вот еще раз пришлось столкнуться с этим же... забыл как боролся и в поиске увидел свой пост, нашел свою ошибку и решил поправить =)
После внимательного прочтения ( целого абзаца! =) ) документации оказалось, что никто и не обещал восстановления геометрии главного окна при вызове метода restoreState().
В общем не важно где происходит сохранение в деструкторе или в closeEvent(), как, думаю, не важно и с восстановлением... Важно сохранять и восстанавливать (если это, конечно, требуется) и геометрию и состояние отдельно!
Вот так все работает:
ActionTest::ActionTest(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
QSettings s;
restoreGeometry( s.value( APP_GEOMETRY, QByteArray() ).toByteArray() );
restoreState( s.value( APP_STATE, QByteArray() ).toByteArray() );
}
ActionTest::~ActionTest()
{
QSettings s;
s.setValue( APP_STATE, saveState() );
s.setValue( APP_GEOMETRY, saveGeometry() );
}