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();

Теперь, когда окно загружается, после того, как нарисован пользовательский интерфейс, оно считывает настройки, чтобы установить значение флажка на то, что вы установили, когда нажимали кнопку обновления.

Другие вопросы по тегам