Класс главного окна может очень легко раздуться со всеми видами функциональности. Я сам с этим справился, так что это очень реальная проблема.
Правда, это не столько вопрос QT, сколько вопрос объектно-ориентированного проектирования. Ключ в том, что ваше окно вывода не обязательно должно быть частью QMainWindow, так что, вероятно, не должно быть. Сделайте отображение виджета и вставьте его в главное окно. Это гораздо более гибко, так как если вам когда-либо понадобится переместить эту панель вывода, она не будет привязана к определенной части программы.
Логика, которая подает данные в эту панель вывода, также должна получить свой собственный класс, отделяющий ответственность за отображение вывода от ответственности за получение вывода.
Для справки о концепциях, лежащих в основе моего предложения, см. Принцип единой ответственности и разделение интересов .