" in.txt"的位置是什么?在QtCreator开发时QFile?

时间:2014-08-11 11:44:30

标签: qt qt-creator

我正在使用此代码从纯文本文件中读取一些值。

但问题是默认值无法读取。我用调试器查看了这个,它说QFile文件之后我的文件对象的exists属性为false(" defaults.txt");线。

我尝试将此文件放在多个位置,但Qt无法检测到它。

这个文件在开发时应该放在哪里?

我试过了:

C:\编码\累积坐标 - Desktop_Qt_5_3_0_MinGW_32bit-调试\调试\ defaults.txt

void MainWindow::readDefaults() {
    QFile file("defaults.txt");
       if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
           return;

       int count = 0;
       QTextStream in(&file);
       while (!in.atEnd()) {
           QString line = in.readLine();
           switch (count)
           {
           case 0:
               deltaX->setValue(line.toDouble());
               break;
           case 1:
               deltaY->setValue(line.toDouble());
               break;
           case 2:
               deltaZ->setValue(line.toDouble());
               break;
           }
           count++;
       }
}

2 个答案:

答案 0 :(得分:2)

如果指定的路径不是绝对路径,则将其视为与进程'工作目录相关。这不是Qt特定的。常见操作系统上的所有本机文件相关功能都以相同的方式工作。

通常,工作目录可以是任何东西。这取决于您运行该过程的方式。例如,如果从shell运行它,则默认情况下与shell的工作目录相同。它可能与包含可执行文件或项目源的目录不同。

您可以查看Qt Creator使用的默认工作目录。选择左侧面板上的“项目”图标,切换到“运行”选项卡以查看运行设置。它将包含“工作目录”字段。您可以设置任何工作目录。默认情况下它与构建目录相同。

enter image description here

指定输入文件的常用策略是从应用程序参数中读取它。使用QCoreApplication::arguments()获取参数列表(丢弃第一个参数,因为它是exe文件名),并在项目的Qt Creator中的运行设置的“参数”字段中指定文件路径。在这里指定完整路径是可以的,所以你不必担心工作目录。

答案 1 :(得分:0)

我遇到了类似的问题。导致应用程序工作目录是build directory而不是project directory

尝试将文件放在可执行文件的位置,它应该可以正常工作。