- Исправлен баг с методом pixmap() - нельзя было получить картинку после уничтожения объекта QPixmap;
PQEngineWidgets QSplitter:
- Исправлена невозможность использования класса.
PHPQt5:
- Добавлена шаблонная функция, с помощью которой можно создать объект по имени класса и зарегистрировать его в PHP, при условии, что
запрашиваемый класс был зарегистрирован (класс может быть зарегистрирован другим расширением).
Функция позволяет создавать непрямые взаимосвязи между расширениями, когда расширения не зависят друг от друга на этапе компиляции, но могут совместо работать с классами объявленными в них.
T* pq_createObjectT<T>(const QString &className, const QVariantList &args);
Реальный пример использования на примере расширения PQEngineWidgets, которое не зависит от расширения PQEngineDrawKit, но может работать с его классом QPixmap:- Код:
PQObject *PQLabel::pixmap() const
{
QVariantList args;
args << *(QLabel::pixmap());
// т.к. PHP вероятнее всего уничтожил объект QPixmap вместе с переменной, а его копия
// по прежнему существует в QLabel, нужно пересоздать этот объект:
PQObject *pqobject = pq_createObjectT<PQObject>("QPixmap", args);
return pqobject;
}
- phpqt Код:
function method_one() {
$pixmap = new QPixmap;
$pixmap->loadFromData(file_get_contents("http://example.com/image.png"));
$this->label->pixmap = $pixmap;
// $pixmap уничтожается
// но его копия остается в QLabel
}
function method_two() {
// и тут мы всё-равно получим доступ к его копии
pre($this->label->pixmap->size());
}
В качестве шаблона может выступать совершенно любой класс доступный в текущем контексте. В примере используется PQObject, но для получения ссылки на объект можно использовать и QObject, и QWidget и любой другой; - Исправлена функция конвертации строк при вызове методов;
Скачать
Установка:
Скопировать в папку с установленным PQBuilder, запустить самораспаковывающийся архив и извлечь с заменой файлов.