0 / 0 / 0
Регистрация: 06.12.2015
Сообщений: 10
1

Сохранение данных после закрытия окна

26.09.2017, 20:11. Показов 1857. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
]У меня есть программа в которой есть график, слайдер, кнопка и спинбоксы... суть программы такова: когда начинаю двигать слайдер вправо - прямая на графике растёт, двигаю слайдер влево - график уменьшается (всё сделано в дизайнере)
Мне нужно, чтобы после закрытия этого окна данные на которых я остановился сохранялись и после очередного запуска все значения оставались на своих местах... как это сделать... пробовал с QSettings и QFile но что-то не получилось(( напишите пожалуйста как правильно нужно написать код для этого...

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QString>
#include <QFile>
#include <QCloseEvent>
#include <QSettings>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private slots:
    void on_pushButton_clicked();
 
    void on_pushButton_2_clicked();
 
private:
    Ui::MainWindow *ui;
    QCloseEvent *event;
    int Interval;
    QString(&file) ;
 
};
 
#endif // MAINWINDOW_H
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QString>
#include <QSettings>
#include <QMessageBox>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
 
    ui->setupUi(this);
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
 
}
 
void MainWindow::on_pushButton_clicked()
{
    QGraphicsScene *scene = new QGraphicsScene(ui->graphicsView);
    QPen pen(Qt::green);
    scene->addLine(0,90,180,90,pen);//x
    scene->addLine(90,0,90,180,pen);//y
 
    ui->graphicsView->setScene(scene);
    int a,b,c,d;
    a =ui->spinBox  ->value();
    b =ui->spinBox_2->value();
    c =ui->spinBox_3->value();
    d =ui->spinBox_4->value();
    
    QPen pen2(Qt::red);
    scene->addLine(a*15+90,90-b*15,c*15+90,90-d*15,pen2);
 
 
    ui->graphicsView->setScene(scene);
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2017, 20:11
Ответы с готовыми решениями:

Сохранение данных приложения после закрытия
Здравствуйте. Мне нужно чтобы после закрытия приложения у меня сохранялись данные в QListWidget. У...

Уничтожение окна после закрытия
Form1 и Form2 наследники QDialog int openForm(const QString &amp;name) { void *form; ...

Вылетает программа после закрытия диалогового окна
Есть диалог в котором открывается qwebview header class webViewDialog: public QDialog { ...

Сохранение изменений в таблице после закрытия окна
Мучаю машину уже неделю, а до ума все не доведу... Sql код в запросе работает, но при закрытии...

7
1069 / 651 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
29.09.2017, 19:43 2
Что конкретно в QSettings не понятно?
How to Use QSettings
0
0 / 0 / 0
Регистрация: 06.12.2015
Сообщений: 10
29.09.2017, 20:24  [ТС] 3
Выкидывает ошибку вот в этом месте QSettings *settings2 = new QSettings(file,QSettings::IniFormat);
не знаю точно как объявить file пробую через QString но потом ругается то на MainWindow, то типо не хватает скобочки, хотя скобки все стоят...
0
1069 / 651 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
30.09.2017, 12:32 4
Andrey Lastovsk, не вижу такой строки в вашем коде.
0
0 / 0 / 0
Регистрация: 06.12.2015
Сообщений: 10
30.09.2017, 12:34  [ТС] 5
Скинул исходный код программы... вскоре скину код с QSettings
0
0 / 0 / 0
Регистрация: 06.12.2015
Сообщений: 10
02.10.2017, 00:17  [ТС] 6
Вот здесь всё что я пробовал

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QString>
#include <QSettings>
#include <QMessageBox>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
 
    ui->setupUi(this);
  /* QFile *file = new QFile();
         if(file->open(QIODevice::ReadOnly | QIODevice::Text)){
             QString string=file->readAll();
             //добавляем в QListWidget
 
             file->close();
         }*/
 
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
    /*QFile *file = new QFile();
    if(file->open(QIODevice::WriteOnly | QIODevice::Text)){
              //сохраняем в файл данные
QString string=file->readAll();
              QFile::write();
              file->close();
         }
         delete file;*/
 
}
 
void MainWindow::on_pushButton_clicked()
{
    QGraphicsScene *scene = new QGraphicsScene(ui->graphicsView);
    //Это как раз создана сцена. Сцена - это класс для работы с 2D графикой.
    //Теперь, раз это график, то построим координатные оси X и Y.
    QPen pen(Qt::green);//Просто выбираем цвет для карандашика
    scene->addLine(0,90,180,90,pen);//x
    scene->addLine(90,0,90,180,pen);//y
 
    ui->graphicsView->setScene(scene);
    int a,b,c,d;
    a =ui->spinBox  ->value();
    b =ui->spinBox_2->value();
    c =ui->spinBox_3->value();
    d =ui->spinBox_4->value();
    //Забираем значения переменных из SpinBox-ов
    QPen pen2(Qt::red);//Карандашик для графика
    scene->addLine(a*15+90,90-b*15,c*15+90,90-d*15,pen2);
    //(90;90) – точка пересечения осей. Значит, мы должны к x-ам прибавить x //центра, а из y вычесть значение Y центра. 15 – это количество пикселов в //0,5 мм. Это все требуется для наиболее точного расположения графика.
 
    ui->graphicsView->setScene(scene);//Добавляем в наш GraphicsView нарисованную сцену.
 
    QSettings *settings2 = new QSettings(file,QSettings::IniFormat);
       int Interval   = settings2->value("settings/interval",500).toInt();
 
}
 
void MainWindow::on_pushButton_2_clicked()
{
    void MainWindow::closeEvent (QCloseEvent *event);
    {
 
 
        QMessageBox::StandardButton reply;
        reply = QMessageBox::question(this,"Выход из программы","Вы действительно хотите выйти",
                                                            QMessageBox::Yes | QMessageBox::No);
 
 
      if (reply== QMessageBox::Yes)
      {
            QSettings *settings = new QSettings(file,QSettings::IniFormat);
            settings->setValue("settings/interval1",Interval);  //устанавливаем значение value=1
            // И тп.
            settings->sync(); //записываем настройки
        event->accept();
        //delete settings;
      }
      else
      {
        event->ignore();
      }
 
    }
}
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QString>
#include <QFile>
#include <QCloseEvent>
#include <QSettings>
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private slots:
    void on_pushButton_clicked();
 
    void on_pushButton_2_clicked();
 
private:
    Ui::MainWindow *ui;
   QCloseEvent *event;
   int Interval;
  
   QString *file = new QString;
 
};
 
#endif // MAINWINDOW_H
0
608 / 622 / 98
Регистрация: 29.05.2015
Сообщений: 3,836
02.10.2017, 07:54 7
А зачем обязательно QSetting? Нельзя просто в файл записать/прочитать?
0
02.10.2017, 07:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2017, 07:54
Помогаю со студенческими работами здесь

Сохранение данных после закрытия формы
Всем доброго времени суток. Меня интересует вопрос: можно ли сохранить данные после закрытия формы...

Сохранение данных приложения после закрытия
в python 3.6 Здравствуйте. Мне нужно чтобы после закрытия приложения у меня сохранялись данные в...

Сохранение данных после закрытия страницы
Здравствуйте. Google, конечно мой друг, но истину в нем искать довольно сложно и долго, а здесь...

Сохранение данных приложения после закрытия
как сохранить данные приложения после закрытие и как сортировать лист по имени если имена...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru