На этом шаге рассмотрим метод connect() для соединения объектов.
Соединение объектов осуществляется при помощи статического метода connect(), который определен в классе QObject.
В общем виде, вызов метода connect() выглядит следующим образом:
QObject::connect(const QObject* sender,
                 const char* signal,
                 const QObject* receiver,
                 const char* slot,
                 Qt::ConnectionType type = Qt::AutoConnection
                );                 
                Параметры:
Следующий пример демонстрирует то, как может быть осуществлено соединение объектов в программе.
void main()
{
     ...
     QObject::connect(pSender, SIGNAL(signalMethod()),
                      pReceiver, SLOT(slotMethod())
                      );
     ...
}  
Если вызов происходит из класса, унаследованного от QObject, тогда QObject:: можно опустить:
MyClass ::MyClass() : QObject()
{
        ...
        connect(pSender, SIGNAL(signalMethod()),
                pReceiver, SLOT(slotMethod())
        );
        ...
}   
В случае если слот содержится в классе, из которого производится соединение, то можно воспользоваться сокращенной формой метода connect(), опустив третий параметр (pReceiver), указывающий на объект-получатель. Другими словами, если в качестве объекта-получателя должен стоять указатель this, его можно просто не указывать:
MyClass::MyClass() : QObject()
{
      connect(pSender, SIGNAL(signalMethod()), SLOT(slot()));
}
void MyClass::slot()
{
      qDebug() << "Я слот";
}
Иногда возникают ситуации, когда объект не обрабатывает сигнал, а просто передает его дальше. Для этого необязательно определять слот, который в ответ на получение сигнала (при помощи emit) отсылает свой собственный. Можно просто соединить сигналы друг с другом. Отправляемый сигнал должен содержаться в определении класса:
MyClass::MyClass() : QObject()
{
       connect(pSender, SIGNAL(signalMethod()), SIGNAL(mySignal()));
}  
Отправку сигналов можно заблокировать на некоторое время, вызвав метод blockSignals() с параметром true. Объект будет "молчать", пока блокировка не будет снята тем же методом blockSignals() с параметром false.
При помощи метода signalsBlocked() можно узнать текущее состояние блокировки сигналов.
Слот, не имеющий параметров, можно соединить с сигналом, имеющим параметры. Это удобно, когда сигналы поставляют больше информации, чем требуется для объекта, получающего сигнал. В этом случае в слоте можно не указывать параметры:
MyClass::MyClass() : QObject()
{
       connect(pSender, SIGNAL(signalMethod(int)), SIGNAL(mySignal()));
}  
Если вы не уверены, пригодится ли параметр сигнала в будущем, то лучше определить слот с параметром и проигнорировать его внутри слота. Зато потом, когда возникнет необходимость, вам не потребуется менять прототип слота.
На следующем шаге рассмотрим пример, демонстрирующий механизм сигналов и слотов.