Использование
void emit ( string $signalSignature, Array $args )
Функция emit() вырабатывает сигнал объекта с указанными значениями в качестве аргументов. Сигнатура сигнала должна быть инициализирована в приватном (private) свойстве $signals. Это свойство является одномерным массивом.
Объект, испускающий сигнал, должен быть унаследован от любого QObject (QWidget, QPushButton и д.р.). Вызов функции emit() не из наследника QObject приведёт к закрытию приложения с ошибкой.
Сигнатура сигнала является регистрозависимой и записывается без пробелов, например: "mySignal(int,bool,string)". Поддерживаются 6 типов передаваемых аргументов: Array, Object, string, int, double и bool.
Пример инициализации и выработки произвольного сигнала без передачи аргументов loaded():
class MyObject extends QObject { private $signals = [ "loaded()" ]; public function __construct() { parent::__construct(); /* какой-то код */ $args = []; emit("loaded()", $args); } }
Пример инициализации и выработки произвольного сигнала с передачей одного аругмента loaded(bool):
class MyObject extends QObject { private $signals = [ "loaded(bool)" ]; public function __construct() { parent::__construct(); /* какой-то код */ emit("loaded(bool)", [ true ]); } }
Развёрнутый пример:
class MyObject extends QObject { private $signals = [ "loading()", "loaded(string)" ]; public function __construct() { parent::__construct(); emit("loading()", []); /* какой-то код */ emit("loaded(string)", [ "Success" ]); } } class Window extends QWidget { private $myObject; public function __construct() { parent::__construct(); $this->myObject = new MyObject(); connect($this->myObject, SIGNAL('loaded(string)'), $this, SLOT('loadedSlot(string)')); } public function loadedSlot($sender, $result) { QMessageBox::information($this, "Заголовок", "Сообщение: " . $result); }; }