Qt/C++ запись / чтение файла пары ключ-значение
У меня есть приложение на основе виджетов Qt/C++ для Mac. У меня есть ряд флажков, переключателей и текстовых полей для хранения настроек. Я хочу сохранить их в файле пары "ключ-значение", когда нажимаю кнопку "Обновить", а затем, когда приложение загружается, прочитайте этот файл, чтобы вернуть эти виджеты в правильное состояние.
Есть ли пример того, как это где-то делается?
1 ответ
Вот что я использовал на Mac. Однако, если вы измените setPath()
вашей settings
объект, вы можете заставить его работать на других платформах через документацию.
В mainwindow.h
Я должен был добавить эти записи:
void readSettings();
void writeSettings();
под частными слотами.
Затем в mainwindow.cpp
Я добавил эти примеры функций:
void MainWindow::readSettings()
{
QSettings settings;
settings.setPath(settings.IniFormat,settings.SystemScope,"/etc/xdg");
settings.beginGroup("General");
ui->checkBox1->setChecked(settings.value("checkBox1",false).toBool());
settings.endGroup();
}
void MainWindow::writeSettings()
{
QSettings settings;
settings.setPath(settings.IniFormat,settings.SystemScope,"/etc/xdg");
settings.beginGroup("General");
settings.setValue("checkBox1",ui->checkBox1->isChecked());
settings.endGroup();
}
Вы должны прочитать о "сфере" и setPath()
на странице QSettings для получения дополнительной информации.
Затем в MainWindow::MainWindow()
функция у меня была такая:
QCoreApplication::setOrganizationName("Example Company");
QCoreApplication::setOrganizationDomain("example.com");
QCoreApplication::setApplicationName("Example Product");
ui->setupUi(this);
this->readSettings();
Обратите внимание, что вы можете только readSettings()
после того, как вы установили ui
переменная. И с помощью QCoreApplication
класс, как я сделал, мне не нужно повторно указывать, какие настройки я использую все время.
Затем я взял MainWindow
и добавил checkBox1
и updateButton
на нем и установите updateButton clicked()
Код слота к этому:
this->writeSettings();
Теперь, когда окно загружается, после того, как нарисован пользовательский интерфейс, оно считывает настройки, чтобы установить значение флажка на то, что вы установили, когда нажимали кнопку обновления.