Qt - 相对路径问题

时间:2013-04-10 15:58:49

标签: c++ qt

  1. 我在Qt Creator中的解决方案资源管理器中创建了一个新文件(data.xml),该文件自动添加到Other文件夹中。
  2. 我创建了一段从该文件中读取数据的代码,但是出现了问题:无法找到该文件。
  3. 我将文件复制到c://data.xml并将代码中的路径更改为c://data.xml,一切运行良好。
  4. 我的问题是:如何处理这些相对路径?

    这是代码:

        QString filename="data.xml";
        QVector<Student> students;
        QFile file(filename);
        if (!file.open(QFile::ReadOnly | QFile::Text))
        {
            return;
        }
        QDomDocument doc;
        if (!doc.setContent(&file))
        {
            file.close();
            return;;
        }
        file.close();
        QDomElement root = doc.documentElement();
        QDomElement studentNode = root.firstChildElement("Student");
        while(!studentNode.isNull())
        {
            QString firstName=studentNode.firstChildElement("FirstName").text();
            QString lastName=studentNode.firstChildElement("LastName").text();
            int age=studentNode.firstChildElement("Age").text().toInt();
            students.push_back(Student(firstName, lastName, age));
            studentNode=studentNode.nextSiblingElement("Student");
        }
    

    这是项目文件:

    QT       += core gui xml
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = GUI1
    TEMPLATE = app
    
    
    SOURCES += main.cpp\
            mainwindow.cpp \
        editdialog.cpp \
        student.cpp
    
    HEADERS  += mainwindow.h \
        editdialog.h \
        student.h
    
    FORMS    += mainwindow.ui \
        editdialog.ui
    
    OTHER_FILES += \
        data.xml
    

1 个答案:

答案 0 :(得分:2)

所有此类路径都是相对于启动应用程序的目录计算的。 QtCreator从他们自己的目录启动程序。在您的情况下,我建议您将此行添加到pro文件中:

DESTDIR = $$PWD