Два класса разные.Вы говорите не о Qt, а о результатах использования Designer для создания объектов пользовательского интерфейса.Qt делает это правильно, потому что они пытаются отделить сгенерированный код от всего, что вы можете добавить в качестве логики, например, от функций передачи сигналов и т. Д. В противном случае они должны были бы выполнять одну из трех вещей:
1) Попытайтесь объяснить разницу между тем, что дизайнер должен изменить, и тем, чего пользователь не хочет, чтобы ... разрешать конфликты каким-то таинственным образом, который они должны были бы придумать произвольно.
2) Просто переопределите все, что пользователь изменил.
3) Не изменяйте файл, если пользователь не удалил его или что-то еще.
Первый - это большая работа, и неважно, чторазработчики выбрали, кто-то, где-то будет неудобно.Вторая альтернатива, конечно, расстроит людей, потому что весь код слота, который они пишут, будет разрушаться при каждом изменении пользовательского интерфейса, что будет ОЧЕНЬ неудобно почти все время.Третий, конечно, не был бы удобен по ряду причин.
Так что они делают, это отделяют часть объекта пользовательского интерфейса, созданного Проектировщиком, и часть, написанную разработчиком / пользователем.Это позволяет им просто уничтожать изменения в определенных четко определенных областях, в то же время позволяя разработчику добавлять поведение, которое им необходимо, без необходимости добавлять его.
Это не то, что вы обычно делаете в обычном проектировании программ.Это сделано таким образом, чтобы решить довольно специфическую проблему, связанную с автоматически генерируемым кодом.Это довольно продуманный подход ИМНШО.