Qt,在本地文本文件中读取

Qt, read in a local text file

本文关键字:文件 读取 文本 Qt      更新时间:2023-10-16

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

QFile file("serial_deviceIP.txt");

但是 file.open() 返回 false。

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

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

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

首先,找不到文件的路径。

QFile file("serial_deviceIP.txt");

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

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

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

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

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

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

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

有关详细信息,请参阅 QT 资源系统。

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

一个

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

RESOURCES += ./

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

QFile foo(":bar.txt")

这仅适用于读取它,但不适用于写入。所以要写是必要的,指定一个绝对路径。