1
- Я создал новый файл (data.xml) в своем обозревателе решений в Qt Creator, который автоматически был добавлен в папку файлов
Other
. - Я создал фрагмент кода, который считывает данные из этого файла, но возникла проблема: файл не найден.
- Я скопировал файл в
c://data.xml
и изменил путь в коде также наc://data.xml
, и все сработало хорошо.
Мой вопрос: как обращаться с этими относительными путями?Qt - Относительный вопрос пути
Это код:
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
Это работает. Спасибо. Это единственное решение для использования относительных путей в Qt? –
Ну, 'QString QCoreApplication :: applicationDirPath()' содержит абсолютный путь к вашему каталогу приложений, поэтому вы всегда можете сделать что-то вроде этого: 'QString fileName = QDir (qApp-> applicationDirPath()). AbsoluteFilePath (" ../ etc /data.xml ")'. В любом случае, вам нужно точно знать, где находится ваша программа. Я рекомендую использовать стандартные каталоги Unix, такие как «bin», «etc», «share» и т. Д. – Amartel