Библиотека PHPQt5
Создание GUI приложений на PHP с использованием инструментария Qt.
О проекте PHPQt5
PHPQt5 - это расширение языка программирования PHP, обеспечивающее объектно-ориентированный интерфейс к классам Qt. С помощью PHPQt5 можно разрабатывать оконные приложения для Windows и Linux на языке программирования PHP.
С 28.07.2015 расширение вошло в состав библиотеки PQEngine, реализующей интерфейс для исполнения php-скриптов.
Для быстрого развёртывания рабочего приложения разработчикам предлагается использовать утилиту для сборки проектов PQBuilder комплект средств разработки PHPQt5 SDK Tools.
Программа Hello, World!
/* PQEngine 0.6 или более поздняя версия */ $app = new QApplication($argc, $argv); $widget = new QWidget; $widget->layout = new QVBoxLayout; $button = new QPushButton(new QIcon(":/assets/info.png"), "Нажми меня", $widget); $button->setIconSize(new QSize(24, 24)); $button->onClicked = function() use($widget) { $messageBox = new QMessageBox(QMessageBox::Information, $widget->windowTitle, "Нажали-таки!"); $messageBox->addButton("Ok ;-)", QMessageBox::AcceptRole); $answer = $messageBox->exec(); }; $widget->layout->addWidget($button); $widget->windowTitle = "Привет, мир!"; $widget->resize(250, 100); $widget->show(); return $app->exec();
Программа Hello, World! создаёт окно с заголовком «Привет, мир!», содержащее кнопку с изображением, загруженным из ресурсов приложения, и с надписью «Нажми меня». Нажатие на кнопку приводит к созданию модального информационного окна с текстом «Нажали-таки!»
Поддержка событий (events)
# QCloseEvent class Widget extends QWidget { /** @override closeEvent */ public function closeEvent($event) { $reply = QMessageBox::question($this, "Закрытие", "Вы действительно хотите закрыть приложение?", QMessageBox::Yes|QMessageBox::No); if ($reply == QMessageBox::Yes) { parent::closeEvent($event); } else $event->ignore(); } }
Перед закрытием окна будет открыто диалоговое окно, запрашивающее подтверждение закрытия. В зависимости от выбора пользователя, окно либо будет закрыто, либо событие проигнорируется.
Поддержка UI-файлов, созданных в программе Qt Designer
class Widget extends QWidget { public function __construct($parent = null) { parent::__construct($parent); $this->ui = setupUi($this); $this->pushButton->text = "Нажми меня!"; } /** @slot on_pushButton_clicked(object) */ public function on_pushButton_clicked($sender) { echo "Clicked!"; } }
В приведённом примере функция setupUi() загружает связанный с исходным php-файлом пользовательский интерфейс, спроектированный в программе QtDesigner. В переменную $ui при этом будут записаны ссылки на объекты формы в соответствии с их именами. Так же поддерживается автоматическое соединение слотов (connectSlotsByName) по имени объектов, т.е. при нажатии на кнопку pushButton будет выведено сообщение "Clicked!".
Новости
3-го марта 2017 года был анонсирован выпуск комплекта средств разработки PHPQt5 для IDE QtCreator.
С этого момента утилита PQBuilder считается устаревшей и обновляться более не будет.
13.03.2017
Движок PQEngine переведён на собственную мета-объектную систему PlastiQ.
03.08.2016
Движок PQEngine переведён обратно на UTF8!
Будьте внимательны при работе с строковыми параметрами в Window.
17.03.2016
Движок PQEngine переведён на PHP7!
22.02.2016
Исходный код движка PQEngine выложен на GitHub
22.11.2015
ВАЖНОЕ ОБНОВЛЕНИЕ:
В связи с проблемами совместимости с библиотекой php5ts.dll в Windows,
новые версии PQEngine будут работать в кодировке CP1251!
27.08.2015
Библиотека PHPQt5 перешла в статус альфа-тестирования, а дальнейшие её обновления будут происходить только в составе движка PQEngine. Движок PQEngine будет входит в состав инструментов разработки PQPack, альфа-версия которого доступна по адресу: http://wxmaper.ru/phpqt5/pqpack.7z
28.07.2015
Сайт запущен
01.07.2015