Отладка сигналов Qt, слотов и соединений - PullRequest
14 голосов
/ 20 сентября 2010

Есть ли способ узнать, какие сигналы срабатывают, и если к ним подключен слот?В идеале мы хотели бы видеть все сигналы, а не только сигналы определенного класса или метода;Например, QSignalSpy позволяет отслеживать только конкретные сигналы конкретных экземпляров.

В нашем приложении мы наблюдали проблемы с производительностью из-за того, что сигнал из двух компонентов излучался дважды.В конце концов оказалось, что существует второй экземпляр класса, который должен был быть там только один раз.Знание того, какие сигналы испускаются, в точности помогает при отладке.

Сигналы вызываются через QMetaObject::invoke*, я надеялся найти что-то там, чтобы зацепиться, но я не нашел ничего очевидного.

Ответы [ 2 ]

5 голосов
/ 08 июня 2016

(заявление об отказе, я работаю на KDAB): инструмент GammaRay KDAB может показывать вам объекты и соединения во время выполнения, не требуя каких-либо изменений источника. Он проверяет таблицы мета-объектов и выполняет некоторые зацепки для внедрения кода.

1 голос
/ 20 сентября 2010

QSignalSpy может помочь вам.

Из документов

Класс QSignalSpy включает самоанализ эмиссии сигнала. QSignalSpy может подключаться к любому сигналулюбой объект и записывает его эмиссию.

В документации также есть примеры ..

...