О проекте 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();

phpqt5-hello-world

Программа 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  

comments powered by HyperComments