Qt,读入本地文本文件

时间:2014-11-28 09:22:03

标签: c++ qt

我曾尝试使用QFile打开文本文件: 我试过了

QFile file("serial_deviceIP.txt");

但file.open()返回false。

但是,如果我切换到全球地址,如:

QFile file("C:/Users/shupeng/Documents/qgroundcontrol_peidong_mod/serial_deviceIP.txt");

它有效。为什么?我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

在第一个实例中,找不到文件的路径。

QFile file("serial_deviceIP.txt");

这指定具有相对路径的文件,并且仅当serial_deviceIP.txt位于当前工作目录中时才有效,该目录可能是包含程序可执行文件的目录。 / p>

QFile file("C:/Users/shupeng/Documents/qgroundcontrol_peidong_mod/serial_deviceIP.txt");

这是引用绝对文件路径,因此将找到该文件

答案 1 :(得分:0)

您还可以使用Qt的资源系统将文件与您的应用程序捆绑在一起。

在项目中创建一个.qrc文件,并将您希望在应用程序中使用/加载的任何文件添加到其中。

然后您可以将文件加载为:

QFile file( ":myfiles/serial_deviceIP.txt" );

有关详细信息,请参阅QT Resource System

答案 2 :(得分:0)

当我们开发代码时,我们通常会将project source dir作为参考,因此我们不会给出绝对路径,但在构建当前目录后会改变,它将是构建目录,所以我们的应用程序将找不到没有绝对路径的文件。

一种可能的解决方案是在我们的项目中添加Resources,包括我们的项目目录。所以只需在project_file.pro中添加以下行:

RESOURCES += ./

然后在你去阅读时使用文件名前面的字符:,就像它一样:

QFile foo(":bar.txt")
  

这只是为了阅读而不是写作。所以写入是必要的指定绝对路径。