Сохраните состояние QCheckBox в файле и загрузите состояние при перезапуске программы.

В моем приложении с графическим интерфейсом у меня есть некоторые метки в главном окне, видимость меток контролируется с помощью флажков в диалоговом окне, которое открывается при нажатии кнопки (настройка). Теперь все работает нормально, то есть, если я открою диалоговое окно настроек, я могу установить или снять флажки; следовательно, метки также устанавливаются видимыми или невидимыми.

mysettingsdialog.cpp

void mysettingsdialog::onclick(bool checked)      //by AJ kpi conf
{
if(myCheckBox->isChecked()==true)
{
emit setlabelvisible();
}
else
{
emit setlabelinvisible();
}
}

mainwindow.cpp

MySettingsDialog* myset=new MySettingsDialog(this);
connect(myset,SIGNAL(setlabelvisible()),this,SLOT(enable1()));
connect(myset,SIGNAL(setlabelinvisible()),this,SLOT(disable1()));

void MainWindow::enable1()
{
ui->label->setVisible(true);
qDebug()<<"VISIBLE label";
}
void MainWindow::disable1()
{
ui->label->setVisible(false);
qDebug()<<"INVISIBLE label";
}

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

У меня вопрос, как я могу сохранить «состояние» флажка в переменной и записать его в файл. И снова использовать то же самое, чтобы установить состояние флажка ???

Я имею в виду, что чтение / запись значений из файла для QLabels и QLineEdits достаточно проста, но я озадачен тем, как сделать это с помощью флажка.

1

Решение

  1. Создайте контейнер для хранения указателя каждого флажка.
  2. Создайте еще один контейнер для хранения «состояния» каждого флажка. Для двоичного флажка вы можете использовать isChecked() запросить, установлен ли флажок. В противном случае вы можете позвонить checkState() вернуть состояние как enum, если вы используете флажок с тремя состояниями (см. редактирование).
  3. При загрузке настроек присвойте состояние каждому флажку соответственно.

  4. Вы можете использовать QSettings управлять настройками и сохранять их как ини файл.


редактировать

Просто отметьте, что есть опция для флажка с тремя состояниями. От документ:

QCheckBox опционально обеспечивает третье государство указать «без изменений».
Это полезно всякий раз, когда вам нужно дать пользователю возможность
не проверять и не снимать флажок. Если вам нужен этот третий
состояние, включите его с setTristate(), и использовать checkState() запросить
текущее состояние переключения.

3

Другие решения


По вопросам рекламы [email protected]