Эффективность сигналов и слотов Qt - PullRequest
2 голосов
/ 18 февраля 2011

Я просматривал методы внутри QMainWindow и заметил, что некоторые части (такие как resizeEvent и winEvent) не реализованы в виде сигналов, а скорее вы должны наследовать этот класс, чтобы иметь возможность переопределять их.Вопрос в том, насколько эффективны сигналы и слоты и можно ли реализовать эти типы функций в качестве сигналов, на которые могут подписаться другие классы.Например, внутри высокопроизводительного игрового движка.

Ответы [ 3 ]

4 голосов
/ 18 февраля 2011

Насколько я помню, Trolltech заявил, что вызов по сигналу / слоту примерно в 10 раз медленнее, чем вызов virtual.Вы сможете легко обрабатывать десятки, если не сотни тысяч сигналов в секунду.

3 голосов
/ 18 февраля 2011

Сигнал и слоты спроектированы таким образом, что различные объекты могут взаимодействовать, оба объекта находятся под вашим контролем.

Упомянутые вами события вовлекают только один объект за один раз, который напрямую уведомляется циклом событий. Здесь нет необходимости в сигналах или слотах.

Обратите внимание, что вы можете излучать сигнал внутри функции-члена события, если хотите. Часто это правильный способ реагировать на событие. Таким образом, другие объекты могут подписываться на что-либо.

0 голосов
/ 18 февраля 2011

получено из QMainWindow, переопределите сигналы resize () и emit () оттуда, если вы хотите реагировать на такие сигналы в других местах.

...