QSettings не задает переменную
Необходимо сохранить данные переменной int(далее в коде называется pin1), окно,в котором происходят все действия - не mainwidget. Почему-то при записи переменной, при повторном открытии так же равна 0. Никак не могу разобраться в проблемме
часть кода с qsettings(learn.cpp)
#include "learn.h"
#include "ui_learn.h"
#include <QMessageBox>
learn::learn(QWidget *parent)
: QWidget(parent)
, ui(new Ui::learn)
{
ui->setupUi(this);
app_sett = new QSettings(this);
loadSettings();
reset_pin();
if (ui -> buttons -> currentIndex() == 0)
{
ui -> pins ->setEnabled(false);
ui -> back_to_main -> setEnabled(false);
}
}
learn::~learn()
{
saveSettings();
delete ui;
}
void learn::saveSettings()
{
app_sett->setValue("pins", pin1);
}
void learn::loadSettings()
{
pin1 = app_sett -> value("pins", 0).toInt();
}
void learn::reset_pin()
{
ui -> label_2 -> setText("Тема " + (QString::number(pin1)));
if(pin1 ==0)
{
ui -> label_2 -> setText(" ");
}
}
learn.h(тоже немного очищено, тк объявлено много других функций)
#ifndef LEARN_H
#define LEARN_H
#include <QWidget>
#include "settings.h"
#include <QSettings>
namespace Ui {
class learn;
}
class learn : public QWidget
{
Q_OBJECT
public:
explicit learn(QWidget *parent = nullptr);
~learn();
int pin1;
private slots:
void reset_pin();
void saveSettings();
void loadSettings();
private:
Ui::learn *ui;
QSettings* app_sett;
};
#endif // LEARN_H
Также добавляю main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QApplication:: setOrganizationName("Example_for_app");
QApplication:: setApplicationName("Application");
MainWindow w;
w.show();
return a.exec();
}
Ответы (1 шт):
Из комментариев стало ясно, что у вас имеется много проблем, и не все они относятся конкретно к этому коду. Скорее всего, у вас есть также проблема с установкой Qt. Нужно уметь отделять проблемы друг от друга, чтобы решать кажду из них независимо, и для этого хорошо помогает написание минимального воспроизводимого примера. Начните сначала и напишите минимальную программу, которая читает и записывает параметры в файл настроек. Пусть она занимается только этим и ничем другим. Так вам легче будет найти причину того, что у вас не сохраняются настройки. Например, вот этот пример у меня работает прекрасно:
#include <QSettings>
int main(int argc, char *argv[])
{
QSettings app_sett("settings.ini", QSettings::IniFormat);
app_sett.setValue("pins", 1);
int pins = app_sett.value("pins").toInt();
qDebug() << "Pins: " << pins;
pins += 10;
app_sett.setValue("pins", pins);
qDebug() << "New pins: " << app_sett.value("pins").toInt();
return 0;
}
Посмотрите, работает ли он у вас. Если нет, будем разбираться дальше. Если да, то напишите другой пример более высокого уровня и задайте новый вопрос, в котором подробно изложите ваши действия и описание проблемы.