在Linux Qt上使用相对路径读取文件

时间:2014-08-03 13:03:55

标签: qt path resources relative-path qfile

原文:QFile file("/home/casper/QuickRecorder/about_content.txt");(工作)

我试过了:

  1. "about_content.txt"
  2. "/about_content.txt"
  3. "~/about_content.txt"
  4. "./about_content.txt"
  5. "QuickRecorder/about_content.txt"
  6. "/QuickRecorder/about_content.txt"
  7. "~/QuickRecorder/about_content.txt"
  8. "~/QuickRecorder/about_content.txt"
  9. 没有人工作。= [


    我的问题

    1. 我可以使用哪条路径?
    2. 如果我将文件“about_content.txt”注册到资源中,如何将其读入文本浏览器?

    3. 以下是整个代码:

      About::About(QWidget *parent) :
          QDialog(parent),
          ui(new Ui::About)
      {
          ui->setupUi(this);
          this->setFixedSize(this->width(),this->height());
          QFile file("/home/casper/QuickRecorder/about_content.txt");
          if ( !file.open(QIODevice::ReadOnly) )
              QMessageBox::information(0, "Error", file.errorString());
          QTextStream content(&file);
          ui->aboutContentBrowser->setText(content.readAll());
      }
      

      参考:QT C++ GUI Tutorial 27- How to read text file and display file to a textbrowser or textEdit


      感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

如果您将文件about_content.txt放在构建目录中,则可以使用:

  • about_content.txt
  • ./about_content.txt

如果您必须从此路径/home/casper/QuickRecorder/about_content.txt

开启文件
  • 使用您所写的绝对路径。

如果您想使用相对路径

看看relative path vs absolute path的不同之处。因此,如果您将文件放置到/home/casper/QuickRecorder/about_content.txt并且您确切知道您的构建目录是/home/casper/app-build - 那么您可以使用相对路径../QuickRecorder/about_content.txt

看看QDir课程。它已经包含许多有用的方法。

如果您要将文件放入资源

这个程序非常简单。只需为项目添加资源,然后根据The Qt Resource System将文件添加到资源中。例如,您可以将文件about_content.txt添加到.qrc文件,并以这种方式在您的程序中使用它:QFile file(":/about_content.txt");

答案 1 :(得分:1)

您可以使用静态函数QDir::homePath()获取用户主目录的路径。

QString homePath = QDir::homePath();
QFile file(homePath + "/QuickRecorder/about_content.txt");
...