Как включить текстовый файл в приложение qt?



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



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



Кстати, спасибо заранее!

578   4  

4 ответов:

Вы должны добавить файл ресурсов qt (.разводка) в проекте

Это может выглядеть так:

<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.

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

Такой код работает в 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();

Продолжая отвечать на взрывающийся ответ.

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

QResource r( ":/file.xml" );
QByteArray b( reinterpret_cast< const char* >( r.data() ), r.size() );

Comments

    Ничего не найдено.