我曾尝试使用QFile打开文本文件: 我试过了
QFile file("serial_deviceIP.txt");
但file.open()返回false。
但是,如果我切换到全球地址,如:
QFile file("C:/Users/shupeng/Documents/qgroundcontrol_peidong_mod/serial_deviceIP.txt");
它有效。为什么?我该如何解决这个问题?
答案 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")
这只是为了阅读而不是写作。所以写入是必要的指定绝对路径。