QT5.2 Файлы ресурсов

0

Короткая, но раздражающая проблема; Я не могу получить доступ к чему-либо определенному в файле ресурсов 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

Что здесь не так? Кто-нибудь может указать, что я делаю неправильно?

С уважением, Джо

  • 0
    Я воспроизвел ваши шаги, и для меня все это работает, возможно, вам следует просто дважды проверить все (например, права пользователя), возможно, перезапустить qmake и все в таком духе.
  • 0
    Я дважды проверил все и правильно написал, что сделал. Я использую следующую версию (в случае, если есть проблема, с которой я не знаком): qt-windows-opensource-5.2.0-msvc2010_opengl-x86-offline.exe
Показать ещё 2 комментария
Теги:
qt

1 ответ

1
Лучший ответ

Согласно документации Qt Resource System:

Также можно указать префикс пути для всех файлов в файле.qrc, используя атрибут prefix тега qresource:

<qresource prefix="/myresources">
    <file alias="cut-img.png">images/cut.png</file>
</qresource>

В этом случае файл доступен как: /myresources/cut-img.png.

Таким образом, подпуть отключается при наличии префикса

  • 0
    отлично работает спасибо !!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню