Qt Creator combobox

Как записать текущий текст 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";
}

0

Решение

Может быть, вы забыли закрыть файл

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

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

У вас есть несколько проблем в вашем коде, позвольте мне перечислить их по одному:

  • Вам нужен этот флаг для «перезаписи» согласно вашему комментарию:

    QIODevice :: Truncate 0x0008 Если возможно, устройство усекается до его открытия. Все более раннее содержимое устройства потеряно.

  • Что еще более важно, вы проверили, возвращает ли метод после открытия с некоторой ошибкой? Если это так, пожалуйста, распечатайте file.errorString() там:

     if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
    qDebug() << file.errorString();
    return;
    }
    
  • На самом важном примечании вы, вероятно, столкнулись с проблемой, что файл не находится в вашем текущем рабочем каталоге. Если файл находится рядом с исполняемым файлом приложения, измените соответствующую строку в своем коде на это:

    QFile file(QCoreApplication::applicationDirPath() + "/vik.txt");
    
1

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