3

基本的にQt Webサイトから盗んでファイルを開こうとするプログラムがあります。プログラムは、私がその理由について混乱しているものを開くことを拒否します。多くのドキュメントを探しましたが、機能しない理由を説明してください。

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

そして常に: ファイルが開いていた場合は、忘れずに閉じてください。あなたの例では、あなたはしませんでした:

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 に答える