Saving dial value
-
Hi,
In my project, there is a second.ui apart from Mainwindow and it has a dial. I set the dial value to a custom value and i close second.ui. when i reopen second ui, it does not save the value that i set before i close it. So i have define a value in "second.h"int save ;
Then i write the dial value to "save" before closing the ui;
void second::on_closeButton_clicked() { save = ui->dial->value(); close(); }
When i reopen the secon.ui , i read the save value and set the dial ;
ui->setupUi(this); ui->dial->setValue(save);
But i does not set the rigth value , it set the maximum dial value. Where is the error ?
-
Hi
"it set the maximum dial value."That sounds odd. You mean that it goes to max value when u set it ?
Is the save value what you expect if u
place break point and look at it ?
or you can
qDebug() << " save val:" << save;
before the
ui->dial->setValue(save); -
when i save it and do qDebug like this;
void second::on_closeButton_clicked() { save = ui->dial->value(); qDebug() << " save val:" << save; close(); }
i got the rigth value from qDebug . But at startup ;
..... ui->setupUi(this); ui->dial->setValue(save); qDebug() << " save val:" << save;
i got wrong value.
-
ok, but how to you save it to file ? and load it from file again?
If you dont load the old value from a file, it will
just have some random value when you start again. -
if i define with "0" i got only "0" value, but when i define without any default, i got some value like "199922356" , so it is just misunderstanding. anyway, then i have to use QFile, crate a file and save the value to it, and load the save value from a file ?
-
@rapid84
If you dont define any default value, it will just have random value as it just uses
what ever is in that memory location.Yes, to keep it for later runs, you must save it to file. QFile is fine to use.
You can also have a look at QSettings.
http://doc.qt.io/qt-5/qsettings.html
Its ment for saving such values.its easy to use
//load QSettings settings("settingName"); int aValue=settings.value("aKey").toInt(); //write QSettings settings("settingName"); int somevalue=yoursave; settings.setValue("aKey",somevalue);
-
"aKey" is a mandatory paramater ? and the reference mentions that:
When creating a QSettings object, you must pass the name of your company or organization as well as the name of your application. For example, if your product is called Star Runner and your company is called MySoft, you would construct the QSettings object as follows: QSettings settings("MySoft", "Star Runner");
Is this mandatory ? what if , if i dont have any company ? :)
-
@rapid84
hi
the akey is the name of the value. It saves to registry so that why it needs a name
For you , it could be slidervalue or something that explains what u save.You can use anything u like for company. Its also because its store in registry.
So just use some name u like that IS not a real company. :) -
For loading i use;
QSettings settings("settingName"); int aValue=settings.value("aKey").toInt(); int aValue2=settings.value("aKey2").toInt(); ui->dial->setValue(aValue); ui->dial_2->setValue(aValue2);
and for saving i use
QSettings settings("settingName"); int somevalue = ui->dial->value(); int somevalue2 = ui->dial_2->value(); settings.setValue("aKey",somevalue); settings.setValue("aKey2",somevalue2);
These work for me , thanks for help. by the way, in a debian OS , where do it save ( in which directory)?
-
Hi
That is good question :)
try
qDebug() << settings.fileName(); -
If I may suggest one improvement is to use a better name than
"aKey" and "aKey2"
Maybe Dial1Value and Dial2Value