Итак, у меня есть приложение qt, работающее в Linux.Когда приложение изначально запускается, QSettings постоянно записывает в файл settings.conf, хотя в QSettings не было внесено никаких изменений.Как только пользователь меняет какую-либо настройку, он прекращает запись и ведет себя как обычно, и пишет только во время изменений.Наше оборудование не имеет кнопки питания и поэтому никогда не отключается и постоянно подключено, поэтому проблема при постоянной записи QSettings в файл .conf при запуске.
Я искал таймеры, чтобы убедиться, что ни один таймер не предлагал писать, и их нет.Пробовал settings.sync ().Я даже установил одноразовое значение при запуске, так как после изменения значения в приложении после первоначального запуска оно перестает писать, но это не сработало.Постоянство всех настроек записывается таким образом, и после того, как я закомментирую settings.setValue внизу кода, процесс записи .conf работает как положено.Я понятия не имею, почему он пишет, когда значения устанавливаются с помощью кнопки питания.Мысли?
Вот код и поток:
void MainWindow::onNavBarButtonClicked(int buttonClickedIdAsInt)
{
//.....
case NavBarButton::POWER:
activeScreenContainer->setCurrentWidget(userScreen);
activeScreenContainer ->raise();
navBarFrame->raise();
navBarActiveContainerSeparator->hide();
logoUserScreen->show();
logoUserScreen->raise();
if(orientationSelected == appPersistence::PORTRAIT_ORIENTATION_VALUE) {
timeAndUserFrame->hide();
}
emit userLoggedOut();
}
до
connect(this, &MainWindow::userLoggedOut, musicScreenModel,
&MusicScreenModel::onUserLoggedOut);
до
void MusicScreenModel::onUserLoggedOut()
{
emit userLoggedOutTreble(currentTrebleValue);
}
до
connect(musicScreenModel, &MusicScreenModel::userLoggedOutTreble,
settingsScreenModel, &SettingsScreenModel::onUserLoggedOutTreble);
до
void SettingsScreenModel::onUserLoggedOutTreble(int trebleToStore)
{
settings.setValue(appPersistence::MUSIC_TREBLE_KEY + loggedInUser,
trebleToStore);
}
И основной:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QCoreApplication::setOrganizationName("Organization");
QCoreApplication::setApplicationName("AppName");
QSettings::setPath(QSettings::Format::NativeFormat,QSettings::Scope::UserScope, "/opt/");
QSettings settings;
int fontFamilyId = QFontDatabase::addApplicationFont(":/fonts/Quicksand-Bold.ttf");
settings.setValue(fontStyle::QUICKSAND_BOLD_FAMILY_ID, fontFamilyId);
if(!settings.value(appPersistence::ORIENTATION_SELECTED_KEY).isValid()) {
settings.setValue(appPersistence::ORIENTATION_SELECTED_KEY, appPersistence::LANDSCAPE_ORIENTATION_VALUE);
}
if(true) {
DevOnlyFunctions::seedRng();
}
testBuild::setIsTestBuild(false);
MainWindow w;
w.show();
return a.exec();
}