Экспорт SVG в локальный каталог ресурсов

0

Я пытаюсь быстро добраться до папки ресурсов 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"

Я ценю каждую идею. Благодарим за то, что уделили время и задали вопросы!

  • 0
    Если вы установите префикс Temp, то вам может понадобиться ://Temp/Temp ? В любом случае попробуйте перейти к ресурсам в Qt создателе, выберите свой файл, щелкните правой кнопкой мыши, скопируйте res путь в буфер обмена и вставьте этот путь
  • 0
    Спасибо за идею. Я попробовал каждую перестановку URL. Я хотел бы создать файл с помощью QSvgGenerator, чтобы не загружать его. Однако я сделал тест, и папка достижима, проверьте обновленный вопрос.
Показать ещё 2 комментария
Теги:
svg
qt

1 ответ

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

Хорошо, я понял и опубликовал его как ответ.

К сожалению, это невозможно. Qt Resource System запрещает это. Как сказано в документации:

Система Qt resource system является независимым от платформы механизмом для хранения двоичных файлов в исполняемом приложении. Это означает, что ресурсы прочитаны только, файлы thuis, скомпилированные в исполняемый файл, вы не можете записать его, потому что эти файлы хранятся в вашем exe файле. В частности, исполняемый файл can not модифицирует себя во время его работы. Вам придется перекомпилировать QRC файл (используя RCC), а затем повторно создать файл EXE, если один из ресурсов изменился.

Как вы можете видеть, вы должны предоставить другой способ хранения и использования ваших файлов.

Надеюсь, это было полезно для вас.

  • 0
    Спасибо за ответ. Я принимаю это. Знаете ли вы, как лучше всего хранить файлы платформы независимо от исполняемого файла?
  • 0
    @flatronka рядом с исполняемым файлом :) generator.setFileName(QDateTime::currentDateTime().toString("hh_mm_ss_dd_MM_yyyy"));
Показать ещё 3 комментария

Ещё вопросы

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