Сигналы и слоты (Qt)
Материал из Wiki.crossplatform.ru
Версия от 14:56, 27 декабря 2008; Lit-uriy (Обсуждение | вклад)
Библиотека Qt предоставляет гибкую систему уведомления и обмена данными между объектами. Эта система реализуется посредством концепции сигналов и слотов.
Содержание |
Соединение сигналов и слотов
Соединение сигналов и слотов осуществляется:
- В классах наследниках от QObject функцией connect().
- В прочих местах программы с помощью статической функциии-члена QObject::connect()
Аргументами этой функции являются:
- указатель на объект-отправитель
- сигнал объекта-отправителя
- указатель на объект-получатель
- слот объекта-получателя
При соединении сигнало в и слотов можно передавать параметры от сигнала к слоту, если существует сответствующая пара сигнал/слот.
Без параметров
QPushButton btn_quit = new QPushButton("Quit",wgt); ... QObject::connect(btn_quit, SIGNAL(clicked()), qApp, SLOT(quit()));
В этом примере сигнал clicked() от кнопки btn_quit соеденяется со слотом quit() приложения (qApp - глобальный указатель на экземпляр приложения)
С параметрами
При соединении сигналов и слотов с передачей параметров следует помнить замечание указанное в описании к QObject::connect(). Т.е. имена аргументов должны быть опущены.
Неправильно:
QObject::connect(scrollBar, SIGNAL(valueChanged(int value)), label, SLOT(setNum(int value)));
Правильно:
QObject::connect(scrollBar, SIGNAL(valueChanged(int)), label, SLOT(setNum(int)));