Как включить текстовый файл в приложение qt?
У меня есть текстовый файл, из которого мне нужно получить данные по строкам. Поэтому, если мое приложение запущено, оно может читать из текстового файла, чтобы показать информацию. Но я не хочу предоставлять свой текстовый файл отдельно вместе с моим приложением. Как это сделать? И я должен сделать это с помощью Qt!
Я слышал, что использование xml будет лучшим и простым способом для этого.
Ответы
Ответ 1
Вы должны добавить файл ресурсов qt (.qrc) в свой проект
Это может выглядеть так:
<RCC>
<qresource prefix="/">
<file>file.xml</file>
<file>files/file2.xml</file>
</qresource>
</RCC>
После этого вы должны добавить этот файл ресурсов в файл проекта (.pro)
Как это, например:
RESOURCES += myqrcfile.qrc
После этого вы можете использовать этот файл в своем коде с помощью символа ':' для ссылки на файл
Может быть, так:
QFile data(":/file.xml");
//or
QFile data(":/files/file2.xml");
//etc...
Помните, что путь, который вы определяете для файла (в qrc), должен также соответствовать расположению файла в файловой системе.
Надеюсь, что это поможет, для получения дополнительной информации я предлагаю вам прочитать ссылку на документацию, опубликованную Gorkem Ercan.
Ответ 2
Qt Resource System - это то, что вы ищете.
Ответ 3
Такой код работает в Qt 5.2:
QResource common(":/phrases/Resources/Phrases/Common.xml");
QFile commonFile(common.absoluteFilePath());
if (!commonFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug() << "Unable to open file: " << commonFile.fileName() << " besause of error " << commonFile.errorString() << endl;
return;
}
QTextStream in(&commonFile);
QString content = in.readAll();
Ответ 4
Продолжение ответа ExplodingRat.
Использование QFile вроде этого не работает (по крайней мере, не в Qt 4.5), но вы можете использовать:
QResource r( ":/file.xml" );
QByteArray b( reinterpret_cast< const char* >( r.data() ), r.size() );