Короткая, но раздражающая проблема; Я не могу получить доступ к чему-либо определенному в файле ресурсов qt (aka.qrc). Я следовал за qt utorial для создания приложения-виджета TextFinder. В соответствии с ним я создал все необходимые файлы и выполнил все инструкции, но я не могу получить доступ к содержимому qrc. Внутри папки проекта у меня есть файлы вроде:
TextFinder
resources
input.txt
main.cpp
textfinder.cpp
textfinder.h
TextFinder.pro
TextFinder.pro.user
TextFinder.qrc
textfinder.ui
Содержимое файла qrc выглядит следующим образом:
<RCC>
<qresource prefix="/res">
<file>resources/input.txt</file>
</qresource>
</RCC>
Чтобы получить доступ к файлу внутри, я открыл qrc в редакторе, щелкнув правой кнопкой мыши по файлу и выбрав путь к ресурсу копирования в буфер обмена. Это создало ": /res/resources/input.txt". Поэтому я просто ввел это в свою функцию, чтобы открыть файл. Эта функция выглядит следующим образом:
void TextFinder::loadTextFile()
{
QFile inputFile(":/res/resources/input.txt");
inputFile.open(QIODevice::ReadOnly);
if (inputFile.isOpen())
{
QTextStream txtStream(&inputFile);
QString contents = txtStream.readAll();
inputFile.close();
ui->textEdit->setPlainText(contents);
QTextCursor cursor = ui->textEdit->textCursor();
cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);
}
else
{
throw std::runtime_error("Resource file may be wrong?");
}
}
Когда я запускаю приложение, запускается runtime_error, который говорит мне, что он не может открыть файл. В файле проекта у меня есть файл qrc, который определяется следующим образом:
RESOURCES += \
TextFinder.qrc
Что здесь не так? Кто-нибудь может указать, что я делаю неправильно?
С уважением, Джо
Согласно документации Qt Resource System:
Также можно указать префикс пути для всех файлов в файле.qrc, используя атрибут prefix тега qresource:
<qresource prefix="/myresources"> <file alias="cut-img.png">images/cut.png</file> </qresource>
В этом случае файл доступен как: /myresources/cut-img.png.
Таким образом, подпуть отключается при наличии префикса