Как записать текущий текст Combobox в существующий текстовый файл на жестком диске? Вот мой код:
void second::on_pushButton_4_clicked()
{
QFile file("vik.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QTextStream out(&file);
out << ui->comboBox_5->currentText() << "\n";
}
Может быть, вы забыли закрыть файл
void second::on_pushButton_4_clicked()
{
// Get comboBox text value
QString txt = ui->comboBox_5->currentText();
// Open file for writing
QFile file("vik.txt");
file.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream out(&file);
// Write in file
out << txt << "\n";
// Close file
file.close();
}
У вас есть несколько проблем в вашем коде, позвольте мне перечислить их по одному:
Вам нужен этот флаг для «перезаписи» согласно вашему комментарию:
QIODevice :: Truncate 0x0008 Если возможно, устройство усекается до его открытия. Все более раннее содержимое устройства потеряно.
Что еще более важно, вы проверили, возвращает ли метод после открытия с некоторой ошибкой? Если это так, пожалуйста, распечатайте file.errorString()
там:
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qDebug() << file.errorString();
return;
}
На самом важном примечании вы, вероятно, столкнулись с проблемой, что файл не находится в вашем текущем рабочем каталоге. Если файл находится рядом с исполняемым файлом приложения, измените соответствующую строку в своем коде на это:
QFile file(QCoreApplication::applicationDirPath() + "/vik.txt");