0

如何在硬盘驱动器中预先存在的文本文件中写入组合框当前文本?这是我的代码:

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";
}
4

2 回答 2

1

也许你忘了关闭文件

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();
}
于 2014-10-16T07:07:55.113 回答
1

您的代码中有几个问题,让我一一列举:

  • 根据您的评论,您需要此标志用于“覆盖”:

    QIODevice::Truncate 0x0008 如果可能,设备在打开之前被截断。设备的所有早期内容都将丢失。

  • 更重要的是,您是否检查过方法在打开后是否返回并出现错误?如果是,请在file.errorString()此处打印:

     if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
         qDebug() << file.errorString();
         return;
     }
    
  • 最重要的是,您可能面临文件不在当前工作目录中的问题。如果该文件位于应用程序可执行文件旁边,请将相应行更改为您的代码:

    QFile file(QCoreApplication::applicationDirPath() + "/vik.txt");
    
于 2014-10-20T12:11:57.627 回答