• Связь можно аннулировать:

disconnect(led, SIGNAL(overflow()),

this, SLOT(handleMathErrorO));

Это редко приходится делать, поскольку Qt автоматически убирает все связи при удалении объекта.

При успешном соединении сигнала со слотом (или с другим сигналом) их пара­метры должны задаваться в одинаковом порядке и иметь одинаковый тип:

connect(ftp, SIGNAL(rawCommandReply(int, const QString &)), this, SLOT(processReply(int, const QString &)));

Имеется одно исключение, а именно: если у сигнала больше параметров, чем у подключенного слота, то дополнительные параметры просто игнорируются:

connect(ftp, SIGNAL(rawCommandReply(int, const QString this, SLOT(checkErrorCode(int)));

Если параметры имеют несовместимые типы либо будет отсутствовать сигнал или слот, то Qt выдаст предупреждение во время выполнения программы, если сборка программы проводилась в отладочном режиме. Аналогично Qt выдаст предупреждение, если в сигнатуре сигнала или слота будут указаны имена пара­метров.

Одним из главных преимуществ средств разработки Qt является расширение языка С++ механизмом создания независимых компонентов программного обес­печения, которые можно соединять вместе, несмотря на то что они могут ничего не знать друг о друге.

Этот механизм называется метаобъектной системой, и он обеспечивает две основные служебные функции: взаимодействие сигналов и слотов и анализ внут­реннего состояния приложения (introspection). Анализ внутреннего состояния необходим для реализации сигналов и слотов и позволяет прикладным програм­мистам получать «метаинформацию» о подклассах QObj ect во время выполнения программы, включая список поддерживаемых объектом сигналов и слотов и име­на их классов. Этот механизм также поддерживает свойства (для Qt Designer) и перевод текстовых значений (для интернационализации приложений), а также создает основу для системы сценариев в Qt (Qt Script for Applications - QSA).

В стандартном языке С++ не предусмотрена динамическая поддержка мета­данных, необходимых системе метаобъектов Qt. В Qt эта проблема решена за счет применения специального инструментального средства компилятора тос, кото­рый просматривает определения классов с макросом CL0BJECT и делает соответст­вующую информацию доступной функциям С++


<< назад вперед >>