// cUConvMainWindow class constructor
//--------------------------------------------------------------------------------------
cUConvMainWindow::cUConvMainWindow(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
....
loadWindowState();
....
}
//--------------------------------------------------------------------------------------
void cUConvMainWindow::closeEvent(QCloseEvent * event) // closeEvent catcher - control of unsaved data
{
saveWindowState();
event->accept();
qApp->exit();
}
//--------------------------------------------------------------------------------------
void cUConvMainWindow::loadWindowState() // Load and apply window size etc
{
QSettings settingsFile( "config.ini", QSettings::IniFormat );
QPoint pos = settingsFile.value("Layout/Pos", QPoint(-1, -1)).toPoint();
QSize size = settingsFile.value("Layout/Size", QSize(320, 240)).toSize();
bool maximized = settingsFile.value("Layout/Maximized", false).toBool();
resize(size);
if( pos == QPoint(-1,-1) ) {
QRect r( 0, 0, width(), height() ); // Window rectangle
move(QApplication::desktop()->screenGeometry().center() - r.center());
}
else
move(pos);
if( maximized )
setWindowState(windowState() ^ Qt::WindowMaximized);
int stateNum = settingsFile.value("Layout/StateNum", 0).toInt();
QByteArray stateArray = settingsFile.value(QString("Layout/StateData%1").arg(stateNum)).toByteArray();
restoreState(stateArray, stateNum);
}
//--------------------------------------------------------------------------------------
void cUConvMainWindow::saveWindowState() // Save window size etc
{
QSettings settingsFile( "config.ini", QSettings::IniFormat );
settingsFile.setValue("Layout/Maximized", isMaximized());
if( !isMaximized() ) {
settingsFile.setValue("Layout/Pos", pos());
settingsFile.setValue("Layout/Size", size());
}
int stateNum = 0;
QByteArray stateArray = saveState(stateNum);
settingsFile.setValue(QString("Layout/StateData%1").arg(stateNum), stateArray);
}