3
votes

I have a program that I basically stole from the Qt website to try to get a file to open. The program refuses to open anything I am confused as to why. I have looked for lots of documentation but found nothing can you please explain why it does not work.

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QTextStream>
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
    QWidget(parent)
{
    QFile file("C:/n.txt");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
             return;
    QTextStream in(&file);
    QString f=in.readLine();
    lab =new QLabel("error",this);
    lab->setGeometry(100,100,100,100);
    lab->setText(f);

}
2
What does the QFile::error() method return ?Dimitry Ernot
How do I use QFile::error().user1647753
It is extremely easy to use. The easiest way is to store the return value of QFile::error() to a variable, then run the code in a debugger and see what that return value is. Then find from the Qt documentation what that error code means.user362638
And are you really sure that the file C:\n.txt exists? Are you sure it is not, for example, C:\n.txt.txt?user362638
thanl you thank you soososossososo much i have been having so many anxiety attacks over this i am so relived turns out it was n.txt.txt i am so dumb thank youuser1647753

2 Answers

6
votes

Before opening the file, you can always check the existense:

QFile file("myfile.txt");
if (!file.exists()) {
    // react
}

If file exists but does not open, you can get the error state and message:

QString errMsg;
QFileDevice::FileError err = QFileDevice::NoError;
if (!file.open(QIODevice::ReadOnly)) {
    errMsg = file.errorString();
    err = file.error();
}

And always: if the file was openend, then remember to close it. In your example you didn't:

file.close();
0
votes

FileError QFile::error () const Returns the file error status. The I/O device status returns an error code. For example, if open() returns false, or a read/write operation returns -1, this function can be called to find out the reason why the operation failed. See also unsetError().

Post the error code. Isn't it supposed to be QFile file("C:\n.txt"); \ not / in windows?