James A
James A

Reputation: 73

Converting valid QFile to QString - QString is empty

So I am trying to convert a QFile into a QString by doing the following:

void MainWindow::openTemplateFile(QString location)
{
    if (location.isEmpty())
        return;
    else
    {
        QString variable;
        templateFile.setFileName(location);
        if (!templateFile.open(QFile::ReadOnly | QFile::Text))
        {
            QMessageBox::information(this, "Unable to open template", 
            templateFile.errorString());
            return;
        }

        else    // file opened and ready to read from
        {
            QTextStream in(&templateFile);
            QString fileText = in.readAll();
            qDebug() << templateFile.size() << in.readAll();
        }
    }
}

However, in I get the following result in the debug console:

48 ""

templateFile does exist and is part of the MainWindow class. This is also simplified code - in the actual program I read chars from the file and it works correctly. The location string is a result of the QFileDialog::getOpenFileName function, which I open a txt file with.

Upvotes: 2

Views: 2837

Answers (1)

Igor Tandetnik
Igor Tandetnik

Reputation: 52621

You call readAll() twice. The second time, the stream is positioned at end-of-file, and so readAll() has nothing to read and returns an empty string. Print fileText in your debug output instead.

Upvotes: 1

Related Questions