У меня есть виджет строкового поля. Как сделать, чтобы сохранялся текст этой строки и передавался в реестр, чтобы потом можно было загрузить сохранённый текст данной строки.
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSettings>
#include "counter2.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow* ui;
counter2* counter_2;
counter2* counter_3;
QSettings* settings;
public:
void save();
void load();
//signals:
// void toggleToCounter2();
private slots:
//Diclaration slots'
void cleanLines();
void cleanAmounters();
void cleanAll();
void toggleCounter3();
void toggleCounter4();
void toggleCounter5();
void toggleCounter6();
void toggleWindow2();
void toggleWindow3();
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "counter2.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
counter_2 = new counter2();
counter_3 = new counter2();
settings = new QSettings("SimpleStudio", "Counter", this);
//Diclaration variables & QObject::connect
connect(counter_2, &counter2::toggleToCounter1,
this, &MainWindow::show);
connect(counter_3, &counter2::toggleToCounter1,
this, &MainWindow::show);
connect(counter_2, &counter2::toggleToCounter3,
this, &MainWindow::toggleWindow3);
QObject::connect(ui->toggleButton2, SIGNAL(clicked()),
this, SLOT(toggleWindow2()));
QObject::connect(ui->toggleButton3, SIGNAL(clicked()),
this, SLOT(toggleWindow3()));
QObject::connect(ui->cleanLines, SIGNAL(clicked()),
this, SLOT(cleanLines()));
QObject::connect(ui->cleanAmounts, SIGNAL(clicked()),
this, SLOT(cleanAmounters()));
QObject::connect(ui->cleanAll, SIGNAL(clicked()),
this, SLOT(cleanAll()));
QObject::connect(ui->checkBox3, SIGNAL(clicked()),
this, SLOT(toggleCounter3()));
QObject::connect(ui->checkBox4, SIGNAL(clicked()),
this, SLOT(toggleCounter4()));
QObject::connect(ui->checkBox5, SIGNAL(clicked()),
this, SLOT(toggleCounter5()));
QObject::connect(ui->checkBox6, SIGNAL(clicked()),
this, SLOT(toggleCounter6()));
// load();
}
MainWindow::~MainWindow()
{
delete ui;
save();
}
//Discription slots'
void MainWindow::save() {
ui->nameCounter1->setText(settings->setValue("nameString1", ui->nameCounter1->text()));
}
void MainWindow::load() {
ui->nameCounter1->setText(settings->value("nameString1").toString());
}
void MainWindow::cleanLines() {
ui->nameCounter1->clear();
ui->nameCounter2->clear();
ui->nameCounter3->clear();
ui->nameCounter4->clear();
ui->nameCounter5->clear();
ui->nameCounter6->clear();
}
void MainWindow::cleanAmounters() {
ui->amounter1->setValue(0);
ui->amounter2->setValue(0);
ui->amounter3->setValue(0);
ui->amounter4->setValue(0);
ui->amounter5->setValue(0);
ui->amounter6->setValue(0);
}
void MainWindow::cleanAll() {
ui->nameCounterTop->clear();
ui->checkBox3->setChecked(0);
emit MainWindow::toggleCounter3();
ui->checkBox4->setChecked(0);
emit MainWindow::toggleCounter4();
ui->checkBox5->setChecked(0);
emit MainWindow::toggleCounter5();
ui->checkBox6->setChecked(0);
emit MainWindow::toggleCounter6();
emit MainWindow::cleanLines();
emit MainWindow::cleanAmounters();
}
void MainWindow::toggleCounter3(){
if(!ui->checkBox3->isChecked()) {
ui->amounter3->setEnabled(0);
ui->nameCounter3->setEnabled(0);
} else {
ui->amounter3->setEnabled(1);
ui->nameCounter3->setEnabled(1);
}
}
void MainWindow::toggleCounter4(){
if(!ui->checkBox4->isChecked()) {
ui->amounter4->setEnabled(0);
ui->nameCounter4->setEnabled(0);
} else {
ui->amounter4->setEnabled(1);
ui->nameCounter4->setEnabled(1);
}
}
void MainWindow::toggleCounter5(){
if(!ui->checkBox5->isChecked()) {
ui->amounter5->setEnabled(0);
ui->nameCounter5->setEnabled(0);
} else {
ui->amounter5->setEnabled(1);
ui->nameCounter5->setEnabled(1);
}
}
void MainWindow::toggleCounter6(){
if(!ui->checkBox6->isChecked()) {
ui->amounter6->setEnabled(0);
ui->nameCounter6->setEnabled(0);
} else {
ui->amounter6->setEnabled(1);
ui->nameCounter6->setEnabled(1);
}
}
void MainWindow::toggleWindow2() {
counter_2->show();
this->close();
}
void MainWindow::toggleWindow3() {
counter_3->show();
this->close();
}
//void counter2::toggleWindow3() {
// counter_2->close();
// counter_3->show();
//}
Ошибка: mainwindow.cpp:64: ошибка: reference to type 'const QString' could not bind to an rvalue of type 'void'
В Qt за работу с реестром отвечает класс QSettings
:
// Открываем ключ реестра (как бы папку).
// Если компилятор выдаёт ошибку на строку ниже, замените Registry32Format
// на RegistryFormat.
QSettings reg("путь до ключа", QSettings::Registry32Format);
// Записываем значение текстового поля linewidget в реестр
reg.setValue("имя значения", linewidget.value());
// Читаем значение из реестра в текстовое поле linewidget
linewidget.setValue(reg.getValue("имя значения").toString());
Вообще, он может работать не только с реестром, но и с файлами конфигурации, но в данном случае мы направляем его именно на реестр.
У Вас даже тег settings стоит, надо было это же слово в документации Qt вбить.
Вам нужен класс QSettings
, в Windows он как раз с реестром работает. Там же по ссылке есть пример работы с этим классом.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть класс который подтягиват данные из файла css-selectorproperties, но кириллические символы лоомаются превращаясь в иероглифы