Ok solution is:
ulozNastavenia is called on construct, when I call function nastavit nastavenia, because ulozNastavenia is slot called in formchange signal. This is problem, because valuse are saving before I set form values from QSettings.
solution:
@#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSettings>
#include "time.h"
#include <QtDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
QCoreApplication::setOrganizationName("MADNESS s.r.o");
QCoreApplication::setOrganizationDomain("madnes.eu");
QCoreApplication::setApplicationName("Ovulačný kalendár");
ui->setupUi(this);
this->SettingsLoaded = false;
//settings.setProperty();
// nacitame nastavenia
bool ok = this->nacitatNastavenia();
// ak nastavenia neexistuju aplikacia je spustena prvý krát
if(ok)
{
ui->but1->hide();
this->nastavitNastavenia();
}
else
{
// nastavia sa predvolené hodnoty do nastavení
this->nastavitNastaveniaNaPredvolene();
// prepne sa na option2 nastavenia
this->changeToOption2();
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeToOption1()
{
}
void MainWindow::changeToOption2()
{
}
void MainWindow::changeToOption3()
{
}
void MainWindow::nastavitNastavenia()
{
QSettings settings("ovulacnykalendar");
settings.setValue("ovulacny/cyklus",this->cyklus);
//int value = settings.value("cyklus").toInt();
//ui->luteal->setValue(value);
settings.setValue("ovulacny/luteal",this->luteal);
settings.setValue("ovulacny/ciel",this->ciel);
settings.setValue("ovulacny/ZaciatokCykluDen",this->ZaciatokCykluDen);
settings.setValue("ovulacny/ZaciatokCykluMesiac",this->ZaciatokCykluMesiac);
settings.setValue("ovulacny/ZaciatokCykluRok",this->ZaciatokCykluRok);
settings.sync();
// nastavime hodnoty vo formulari nastavenia
ui->ZaciatokCykluDen->setValue(this->ZaciatokCykluDen);
ui->ZaciatokCykluMesiac->setValue(this->ZaciatokCykluMesiac);
ui->ZaciatokCykluRok->setValue(this->ZaciatokCykluRok);
ui->cyklus->setValue(this->cyklus);
ui->luteal->setValue(this->luteal);
if(this->ciel == 0)
{
ui->ciel1->setChecked(true);
ui->ciel2->setChecked(false);
}
else
{
ui->ciel1->setChecked(false);
ui->ciel2->setChecked(true);
}
this->SettingsLoaded = true;
}
void MainWindow::nastavitNastaveniaNaPredvolene()
{
return;
// nastavime this hodnoty
this->cyklus = 28;
this->luteal = 14;
this->ciel = 1;
time_t cas; tm *str; //vytvorenie pointru typu tm
time(&cas);
str = localtime(&cas);
this->ZaciatokCykluDen = str->tm_mday;
this->ZaciatokCykluMesiac = str->tm_mon;
this->ZaciatokCykluRok = str->tm_year;
// ulozime hodnoty
this->nastavitNastavenia();
}
bool MainWindow::nacitatNastavenia()
{
QSettings settings("ovulacnykalendar");
this->cyklus = settings.value("ovulacny/cyklus",24).toInt();
this->luteal = settings.value("ovulacny/luteal").toInt();
this->ciel = settings.value("ovulacny/ciel").toInt();
this->ZaciatokCykluDen = settings.value("ovulacny/ZaciatokCykluDen").toInt();
this->ZaciatokCykluMesiac = settings.value("ovulacny/ZaciatokCykluMesiac",11).toInt();
this->ZaciatokCykluRok = settings.value("ovulacny/ZaciatokCykluRok",2010).toInt();
bool returning = settings.contains("ovulacny/cyklus");
settings.sync();
return returning;
}
void MainWindow::ulozitNastavenia(int value)
{
if(!this->SettingsLoaded)
return;
QSettings settings("ovulacnykalendar");
this->cyklus = ui->cyklus->value();
this->luteal = ui->luteal->value();
if(ui->ciel1->isChecked())
{
this->ciel = 0;
settings.setValue("ovulacny/ciel",0);
}
if(ui->ciel2->isChecked())
{
this->ciel = 1;
settings.setValue("ovulacny/ciel",1);
}
this->ZaciatokCykluMesiac = ui->ZaciatokCykluMesiac->value();
this->ZaciatokCykluDen = ui->ZaciatokCykluDen->value();
this->ZaciatokCykluRok = ui->ZaciatokCykluRok->value();
settings.setValue("ovulacny/cyklus",ui->cyklus->value());
settings.setValue("ovulacny/luteal",ui->luteal->value());
settings.setValue("ovulacny/ZaciatokCykluDen",ui->ZaciatokCykluDen->value());
settings.setValue("ovulacny/ZaciatokCykluMesiac",ui->ZaciatokCykluMesiac->value());
ui->cyklus->setValue(settings.value("ovulacny/ZaciatokCykluMesiac").toInt());
settings.setValue("ovulacny/ZaciatokCykluRok",ui->ZaciatokCykluRok->value());
settings.sync();
}
@