Я пытаюсь быстро добраться до папки ресурсов qt. Он работает, если я экспортирую в другую папку, такую как C:\\Temp\\18_25_21_18_09_2014.svg
, но она не работает, если я использую URL-адрес, например : /Temp/18_25_21_18_09_2014.svg
.
Вот код:
QString fileName(":/Temp/Temp" + QDateTime(QDateTime::currentDateTime()).toString("hh_mm_ss_dd_MM_yyyy") + ".svg");
QSvgGenerator generator;
generator.setFileName(fileName);
generator.setSize(this->size());
generator.setViewBox(QRect(QPoint(0,0), this->size()));
generator.setTitle(tr("bubble_svg"));
generator.setDescription(tr("bubble_svg"));
_painter.begin(&generator);
_painter.setRenderHint(QPainter::Antialiasing);
_painter.setRenderHint(QPainter::HighQualityAntialiasing);
this->render(&_painter);
_painter.end();
Также я создал префикс под названием Temp
и папку под названием Temp
.
Похоже, что QDirIterator может попасть в папку, но QSvgGenerator не смог.
QDirIterator it(":/Temp/Temp", QDir::Files, QDirIterator::Subdirectories);
while (it.hasNext()) {
qDebug() << "FILE FOUND " << it.next();
}
Результат этой части кода:
FILE FOUND ":/Temp/Temp/18_35_19_18_09_2014.svg"
Я ценю каждую идею. Благодарим за то, что уделили время и задали вопросы!
Хорошо, я понял и опубликовал его как ответ.
К сожалению, это невозможно. Qt Resource System
запрещает это. Как сказано в документации:
Система Qt resource system
является независимым от платформы механизмом для хранения двоичных файлов в исполняемом приложении. Это означает, что ресурсы прочитаны только, файлы thuis, скомпилированные в исполняемый файл, вы не можете записать его, потому что эти файлы хранятся в вашем exe файле. В частности, исполняемый файл can not модифицирует себя во время его работы. Вам придется перекомпилировать QRC
файл (используя RCC
), а затем повторно создать файл EXE
, если один из ресурсов изменился.
Как вы можете видеть, вы должны предоставить другой способ хранения и использования ваших файлов.
Надеюсь, это было полезно для вас.
generator.setFileName(QDateTime::currentDateTime().toString("hh_mm_ss_dd_MM_yyyy"));
://Temp/Temp
? В любом случае попробуйте перейти к ресурсам в Qt создателе, выберите свой файл, щелкните правой кнопкой мыши, скопируйте res путь в буфер обмена и вставьте этот путь