Файл, который прописан в .qrc, не открывается в QFile

Я использую Cmake проект, где у меня совмещены C++ и QML. В mainwindow.cpp я загружаю как ресурс main.qml. Так же внутри конструктора mainwindow я запускаю функцию. В этой функции пытаюсь открыть файл, как указано в заголовке.

void MainWindow::SaveListConfig()
{
    QFile file(":/configuration/WidgetOrder.ini");
    file.open(QIODevice::WriteOnly);
    ...
}

Но получаю следующие предупреждение, а запись в файл не проходит:

QIODevice::write (QFile, ":\configuration\WidgetOrder.ini"): device not open

Файл data.qrc указан в CMakeLists.txt. Более того, я вполне без проблем загружаю файлы ресурсов из кода qml. icon: "qrc:/images/fuel-icon.png" Я так же пробовал несколько вариантов обращений в C++:

QIODevice::write (QFile, "qrc:\configuration\WidgetOrder.ini"): device not open
QIODevice::write (QFile, "qrc:\\configuration\WidgetOrder.ini"): device not open
QIODevice::write (QFile, ":\\configuration\WidgetOrder.ini"): device not open

Вот мой data.qrc:

<RCC>
    <qresource prefix="/">
        ...
        <file>images/fuel-icon.png</file>
        <file>configuration/WidgetOrder.ini</file>
        ...
    </qresource>
</RCC>

Существование самого файла я тоже ни раз проверял, конечно. Более того, если вбить полный путь до файла - всё работает.


Ответы (1 шт):

Автор решения: Сергей Воронцов

Нельзя писать в файлы ресурсов. Они доступны только для чтения (read-only). Ресурсы это массив типа static const unsigned char в котором находятся сжатые zip-ом файлы перечисленные в qrc-файле. Вы их можете найти после компиляции в файле qrc_*.cpp

→ Ссылка