Если вы вызываете сеттеры напрямую, вы можете избежать большинства упомянутых вами недостатков.Он будет вести себя как любой другой нормальный вызов.Единственным недостатком в этом случае будет большее время компиляции и больший размер бина.
Если вы вызываете все свои сеттеры с помощью сигналов, то:
1) Более сложный код;так как вы должны помнить, чтобы подключить все ваши сигналы ко всем слотам для каждого набора.
2) Небольшое снижение производительности.Это было бы незначительным для любого приложения GUI;но его там.
3) Менее детерминированный код.Т.е. в зависимости от способа соединения сигналов, вызов может быть передан непосредственно вызываемому абоненту или отправлен через систему событий.Это дополнительно усложняет отладку, помимо того, что вы уже упомянули.
4) Проблемы IDE.Если вы не используете QtCreator или KDevelop, IDE может не понимать специальные ключевые слова (slot, signal, emit).
За исключением (1), все эти проблемы незначительны.Но главная причина, по которой я этого не делаю, в том, что это не имеет смысла.Зачем это делать, если у вас нет нужды?
Разработка программного обеспечения должна заключаться в управлении сложностью, а не в ее создании.