Как включить текстовый файл в приложение qt? - PullRequest
11 голосов
/ 16 февраля 2011

У меня есть текстовый файл, из которого мне нужно получать данные построчно. Так что, если мое приложение запущено, оно может читать из текстового файла, чтобы показать информацию. Но я не хочу предоставлять свой текстовый файл отдельно вместе с моим заявлением. Как это сделать? И я должен сделать это, используя Qt!

Я слышал, что использование xml будет лучшим и простым способом сделать это.

Ответы [ 4 ]

16 голосов
/ 16 февраля 2011

Вы должны добавить файл ресурсов 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.

8 голосов
/ 16 февраля 2011

Qt Resource System - это то, что вы ищете.

4 голосов
/ 11 января 2014

Такой код работает в 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();
3 голосов
/ 04 июля 2012

Продолжение ответа ExplodingRat.

Использование QFile, как это не работает (по крайней мере, в Qt 4.5), но вы можете использовать:

QResource r( ":/file.xml" );
QByteArray b( reinterpret_cast< const char* >( r.data() ), r.size() );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...