• Связь можно аннулировать:
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 и делает соответствующую информацию доступной функциям С++
<< назад вперед >>