Шаг 12.
Библиотека Qt.
Определение слота

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

    Слоты (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() для соединения объектов.




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