У меня есть файл .txt в проекте QT, где я храню параметры настройки для моего приложения. Если я прочитаю его таким образом
void MainWindow::ReadApplicationSettings()
{
QFile cfgFile("config.txt");
if(!cfgFile.exists())
{
qDebug() << "Cannot find config file.";
}
else
{
ParseConfigFile(cfgFile);
SetCfg();
}
cfgFile.close();
}
И проанализирую его:
void MainWindow::ParseConfigFile(QFile &cfgFile)
{
QString line;
if (cfgFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream stream(&cfgFile);
while (!stream.atEnd())
{
line = stream.readLine();
std::istringstream iss(line.toStdString());
std::string id, eq, val;
bool error = false;
if (!(iss >> id))
{
error = true;
}
else if (id[0] == '#')
{
continue;
}
else if (!(iss >> eq >> val >> std::ws) || eq != "=" || iss.get() != EOF)
{
error = true;
}
if (error) { throw std::runtime_error("Parse error"); }
cfgMap[id] = std::stoi(val);
}
}
}
Файл существует, и когда начинается синтаксический анализ, содержимое файла пусто
Результат: line = stream.readLine ();is "".
Если я добавлю файл как файл ресурсов и открою его следующим образом:
QFile cfgFile(":config.txt");
Это работает правильно, но проблемачто файл конфигурации скомпилирован и когда вам нужно изменить какое-то значение, проект должен быть перестроен, чтобы вступить в силу
Я попытался составить путь таким образом QDir::currentPath + "/config.txt"
, но не работает.