* система ресурсов поддерживается с версии PQEngine 0.4 *
* данная статья актуальна для PQEngine версии 0.5.1 или новее *
Чтобы связать с приложением ресурсы (пиктограммы, текстовые файлы и т.д.), в директории с проектом необходимо создать поддиректорию с именем "res" и скопировать в неё необходимые файлы.
Иерархия файлов
PQBuilderProjects/ untitled1/ res/ icons/ exit.png texts/ file.txt main.php untitled1.pqb
Файлы ресурсов из дериктории res будут являться частью дерева исходников приложения.
Ресурсы доступны в приложении под тем же именем, под которым они находятся в дереве исходников, с помощью префикса :/%PROJECT_NAME%/. Например, путь :/untitled1/icons/exit.png даст доступ к файлу exit.png, который располагается в директории %PROJECT_PATH%/res/icons/exit.png.
Использование ресурсов в приложении
Для обращения к ресурсам следует использовать один из двух зарегистрированных в PQEngine методов:
- Метод для передачи ресурсов функциям PHP
Для обращения к ресурсу через такие функции, как include, require, file_get_contents и д.р., необходимо в пути к ресурсу добавить протокол qrc://// загрузка файла MyButton.php из директори res/myClasses/ require("qrc://myClasses/MyButton.php"); $myButton = new MyButton; // загрузка текста из файла button_text.txt из директории res/texts $myButton->text = file_get_contents("qrc://texts/button_text.txt");
- Метод для передачи ресурсов объектам Qt
Для передачи ресурса объекту Qt, следует использовать функцию R// загрузка иконки icon.png из директори res/icons/32x32/ $label = new QLabel; $label->icon = R("text/button_text.txt"); // Но! Загрузка бинарных данных должна производится по протоколу qrc:// $data = file_get_contents("qrc://text/button_text.txt"); $pixmap = new QPixmap; $pixmap->fromRawData($data);
Будьте внимательны! Не рекомендуется использовать устаревшие методы обращения к ресурсам через функции pqread, pqinclude, а так же через установку пути с помощью префикса :/%CORENAME%/
Дополнительные примеры:
/* ... */ $label = new QLabel; $label->icon = ":/untitled1/icons/exit.png"; // рабочий вариант (плохой) $label->icon = R("icons/exit.png"); // рабочий вариант (правильный) $label->text = file_get_contents("qrc://texts/file.txt"); // рабочий вариант (правильный) $label->icon = R(":/icons/exit.png"); // неправильно! $label->icon = R("/icons/exit.png"); // неправильно! $label->text = file_get_contents(":/untitled1/texts/file.txt"); // неправильно! /* * ... */ // рабочий вариант для файла res/source.php include("qrc://source.php"); // рабочий вариант для файла res/some/long/path/source.php include("qrc://some/long/path/source.php"); // НЕРАБОЧИЕ ВАРИАНТЫ! include(":/source.php"); include(R("source.php")); include(R("some/long/path/source.php")); /* ... */comments powered by HyperComments