1.
Чтобы нормально работали saveState() и restoreState().. надо чтобы для всех обьектов которые сохраняются и восстанавливаются, были заданны имена (в дизанере например)
2.
Имена объектов заданы конечно (через setObjectName()) для всех уникальные, иначе бы этот механизм вообще не работал. а он работает, только не так как должен =(
3.
В общем проблема решена... не без посторонних внимательных глаз =)
Ошибка была в том, что я пользовался конструктором и деструктором для восстановления и сохранения состояния соответственно...
так вот восстановление состояния на конструкторе было ошибкой...
как только перешел на closeEvent() и showEvent() так все и заработало =)
4.
Вот еще раз пришлось столкнуться с этим же... забыл как боролся и в поиске увидел свой пост, нашел свою ошибку и решил поправить =)
После внимательного прочтения ( целого абзаца! =) ) документации оказалось, что никто и не обещал восстановления геометрии главного окна при вызове метода 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() );
}