Vikash Kumar
Vikash Kumar

Reputation: 19

Qt Creator combobox

How to write Combobox current text in a preexisting text file in hard drive? Here is my code:

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

Upvotes: 0

Views: 847

Answers (2)

L&#225;szl&#243; Papp
L&#225;szl&#243; Papp

Reputation: 53225

You have several issues in your code, let me enumerate them one-by-one:

  • You need this flag for "overwrite" as per your comment:

    QIODevice::Truncate 0x0008 If possible, the device is truncated before it is opened. All earlier contents of the device are lost.

  • More importantly, have you checked whether the method returns after open with some error? If it does, please print out file.errorString() there:

     if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
         qDebug() << file.errorString();
         return;
     }
    
  • On the most important note, you are likely facing the issue that the file is not in your current working directory. If the file resides beside the application executable, please change the corresponding line into your code to this:

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

Upvotes: 1

R&#233;mi
R&#233;mi

Reputation: 533

Maybe you forgot to close the file

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

Upvotes: 1

Related Questions