Определение слота

   
На этом шаге рассмотрим определение слота.

   
Слоты (slots) — это методы, которые присоединяются к сигналам. По сути, они являются обычными методами. Самое большое их отличие состоит в возможности принимать сигналы. Как и обычные методы, они определяются в классе как public, private или protected. Соответственно, перед каждой группой слотов должно стоять: private slots:, protected slots: или public slots:. Слоты могут быть и виртуальными.

ПРИМЕЧАНИЕ
По данным фирмы Nokia, соединение сигнала с виртуальным слотом примерно в десять раз медленнее, чем с невиртуальным. Поэтому не стоит делать слоты виртуальными, если нет особой необходимости.

   
Есть ограничения, отличающие обычные методы от слотов. В слотах нельзя использовать параметры по умолчанию, например slotMethod(int n = 8), или определять слоты как static.

   
Классы библиотеки содержат целый ряд уже реализованных слотов. Но определение слотов для своих классов — это частая процедура.

   
Реализация слота показана ниже

 class MySlot : public QObject {
      Q_OBJECT
      public:
             MySlot();
      public slots:
      void slot()
      {
           qDebug() << "Я слот";
      }
};

   
Внутри слота вызовом метода sender() можно узнать, от какого объекта был выслан сигнал. Он возвращает указатель на объект типа QObject. Например, в этом случае на консоль будет выведено имя объекта, выславшего сигнал:

 void slot()
{
     qDebug() << sender()-> objectName();
}

   
На следующем шаге рассмотрим метод connect() для соединения объектов.

Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий