Файл не получает и не сохраняет данные. Qt С++
Пишу программу на Qt C++ с функциями регистрации и авторизации, с шифрованием пароля. Но все это без использования баз данных, такая задача. Проблема в том, что когда программа получает пароль, логин и должна записать их в текстовый файл, сам файл остается пустым. Есть код функции:
void secondWindow::on_pushButtonRegistration_clicked()
{
QString login = ui->lineeditLogin->text();
QString pass = ui->lindeeditPass->text();
if (login.isEmpty() || pass.isEmpty()) {
QMessageBox::warning(this, "Warning", "Login and password cannot be empty.");
return;
}
QByteArray hashedPassword = QCryptographicHash::hash(pass.toUtf8(),
QCryptographicHash::Sha256);
QFile file("users.txt");
if (file.open(QIODevice::Append | QIODevice::Text)) {
QTextStream out(&file);
out << login << " " << hashedPassword.toHex() << "\n";
file.close();
QMessageBox::information(this, "Success", "User registered successfully.");
close();
} else {
QMessageBox::critical(this, "Error", "Could not open file for writing.");
}
Я задал вопрос в чате GPT и Bing по этому вопросу, они предложили проверить, есть ли в проекте сам текстовый файл - в нем все правильно, предложили проверить, как программа реагирует на каждом этапе выполнения этой функции - все было правильно, но файл сам остается пустым. Я не понимаю, в чем проблема.
Ответы (1 шт):
Почитай доку про QSettings
https://doc.qt.io/qt-6/qsettings.html
позволяет сохранять данные по ключ-значению в системе, думаю как раз твой случай
Как пример:
QCoreApplication::setApplicationName("name"); //название проги
QCoreApplication::setOrganizationDomain("Organization"); //название организации
QSettings users (QCoreApplication::organizationDomain(),QCoreApplication::applicationName(),&a);
users.setValue(key, value); //сетим ключ логин - пароль
if(users.contains(key))
{
users.value(key); // получаем пароль по ключу
}