在Qt中打开和读取文件

时间:2017-06-27 21:45:08

标签: c++ user-interface qt5

单击“文件|打开”时,我尝试使用菜单栏打开文件(硬编码)。该文件应附加并显示每一行。我的功能是找不到文件。所以在我点击打开之后我回来了'无法找到trace.txt'。我将文件保存在与其他项目文件相同的目录中。我想知道我是否没有正确打开文件?任何人都可以查看我的代码,看看你是否发现了一个我不是的错误?

void MainWindow::readFile(){
    infoLabel->setText(tr("Invoked <b>File|Open</b>"));
    QString filename="trace.txt";
    QFile file(filename);
    if(!file.exists()){
        qDebug() << "File <i>cannot</i> be found "<<filename;
    }else{
        qDebug() << filename<<" Opening...";
    }
    QString line;
    textEdit->clear();
    if (file.open(QIODevice::ReadOnly | QIODevice::Text)){
        QTextStream stream(&file);
        while (!stream.atEnd()){
            line = stream.readLine();
            textEdit->setText(textEdit->toPlainText()+"0x"+line+"\n");
            qDebug() << "line: "<<line;
        }
    }
    file.close();
}

更新: 我将QFile对象更改为直接路径并找到了该文件。另一方面,我在无限循环中读取它,它永远不会进入textEdit并不断输出到调试器。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

使用current或currentPath()查看您正在使用的目录。 请参阅此示例以了解当前目录:

QFile file;
QDir::setCurrent("/tmp");
file.setFileName("readme.txt");
QDir::setCurrent("/home");
file.open(QIODevice::ReadOnly);      // opens "/home/readme.txt" under Unix

来自http://doc.qt.io/qt-5/qfile.html#QFile