2015-10-06 4 views
1

Есть ли способ найти общее количество соединений сигналов/слотов в приложении Qt. Кто-то относится к гамма-лучу, но есть ли более легкое решение?Общее количество соединений сигналов/слотов?

+1

Вы говорите о соединениях сигналов/слотов, верно? Я скорректировал вопрос, потому что «соединение» может быть также базой данных или сетью. Вы хотите также подсчитать внутренние соединения Qt или только те из ваших собственных объектов? Для чего вам нужна информация? Возможно, будет лучшее решение. Помогает ли это? http://stackoverflow.com/questions/2755694/determine-signals-connected-to-a-given-slot-in-qt –

+0

Спасибо за ваши комментарии и редактирование, я действительно ищу способ проверить и проверить, есть ли являются дублированными соединениями, например, несколько раз одна и та же пара сигналов/слотов подключена несколько раз. – Nyaruko

+2

@Nyaruko не ответ на ваш вопрос, но если вы хотите избежать дубликатов, вы можете использовать флаг 'Qt :: UniqueConnection'. Btw, GammaRay является открытым исходным кодом, вы можете исследовать его код. Это очень мощный инструмент. –

ответ

1

Проверить Qt::UniqueConnection.

This is a flag that can be combined with any one of the above connection types, using a bitwise OR. When Qt::UniqueConnection is set, QObject::connect() will fail if the connection already exists (i.e. if the same signal is already connected to the same slot for the same pair of objects). [...]

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

QLabel *label = new QLabel; 
QLineEdit *lineEdit = new QLineEdit; 
auto ok = QObject::connect(lineEdit, &QLineEdit::textChanged, 
      label, &QLabel::setText, 
      Qt::UniqueConnection); 
Q_ASSERT(ok); 

Отказ от ответственности: непроверенный.

+0

'bool ok = QObject :: connect' неверно. Тип возврата - 'QMetaObject :: Connection' - он может использоваться для будущей диагностики. –

+0

хорошо, я думал, что 'operator bool()' обрабатывает это. Исправлена. –

+0

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

Смежные вопросы