需要保存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();
}
从评论中可以清楚地看出,您有很多问题,但并非所有问题都与该代码有关。最有可能的是,您在安装 Qt 时也遇到了问题。您需要能够将问题彼此分离,以便独立地解决每个问题,并且编写最小的可重现示例对此有很大帮助。从头开始编写一个读取和写入设置文件的最小程序。让她只做这件事,不要做其他的事。这将使您更容易找到设置未保存的原因。例如,这个例子对我来说非常有用:
看看它是否适合你。如果没有,我们将进一步调查。如果是这样,请写另一个更高级的例子,并提出一个新问题,详细说明您的操作和问题描述。