Qt,在本地文本文件中读取
Qt, read in a local text file
我尝试使用 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")
这仅适用于读取它,但不适用于写入。所以要写是必要的,指定一个绝对路径。
相关文章:
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量