3

我有一个程序,我基本上是从 Qt 网站上偷来的,试图打开一个文件。该程序拒绝打开任何我对为什么感到困惑的东西。我找了很多文档,但什么也没找到,请您解释一下为什么它不起作用。

#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);

}
4

2 回答 2

6

在打开文件之前,您可以随时检查是否存在:

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

如果文件存在但未打开,您可以获得错误状态和消息:

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

并且总是:如果文件是 openend,那么记得关闭它。在您的示例中,您没有:

file.close();
于 2013-03-26T05:50:23.390 回答
0

FileError QFile::error () const 返回文件错误状态。I/O 设备状态返回错误代码。例如,如果 open() 返回 false,或者读/写操作返回 -1,则可以调用该函数来查找操作失败的原因。另请参见 unsetError()。

贴出错误代码。不应该是 QFile file("C:\n.txt"); \ 不是 / 在 Windows 中?

于 2013-03-25T16:57:16.910 回答