Qt,读入本地文本文件
Posted
技术标签:
【中文标题】Qt,读入本地文本文件【英文标题】:Qt, read in a local text file 【发布时间】:2014-11-28 09:22:03 【问题描述】:我尝试使用 QFile 打开一个文本文件: 我试过了
QFile file("serial_deviceIP.txt");
但是 file.open() 返回 false。
但是,如果我切换到全局地址,例如:
QFile file("C:/Users/shupeng/Documents/qgroundcontrol_peidong_mod/serial_deviceIP.txt");
它有效。为什么?我该如何解决这个问题?
【问题讨论】:
你应该检查当前目录(如here所述),看看你是否真的在文件所在的目录中 【参考方案1】:在第一种情况下,找不到文件的路径。
QFile file("serial_deviceIP.txt");
这指定了具有相对路径的文件,并且仅当 serial_deviceIP.txt 位于 当前工作目录 中时才有效,该目录很可能是包含您的程序可执行文件的目录。
QFile file("C:/Users/shupeng/Documents/qgroundcontrol_peidong_mod/serial_deviceIP.txt");
这是引用一个绝对文件路径,所以会找到该文件
【讨论】:
【参考方案2】:您还可以使用 Qt 的资源系统将文件与您的应用程序捆绑在一起。
在您的项目中创建一个.qrc
文件,并将您希望在应用程序中使用/加载的任何文件添加到其中。
然后您可以将文件加载为:
QFile file( ":myfiles/serial_deviceIP.txt" );
更多信息请参见QT Resource System。
【讨论】:
【参考方案3】:发生的情况是,当我们开发代码时,我们通常会牢记project source dir
作为参考,因此我们不会给出绝对路径,但是在构建之后当前目录会发生变化,它将成为构建目录,所以我们的应用程序不会找到没有绝对路径的文件。
一个可能的解决方案是在我们的项目中添加一个Resources
,包括我们的项目目录。所以只需在project_file.pro
中添加以下行:
RESOURCES += ./
然后在阅读时在文件名前加上:
字符,点赞:
QFile foo(":bar.txt")
这仅适用于读取,但不适用于写入。所以写是有必要指定一个绝对路径。
【讨论】:
以上是关于Qt,读入本地文本文件的主要内容,如果未能解决你的问题,请参考以下文章