Лучшая практика Qt: добавить сигналы и слоты в мое главное окно или создать новый класс

Я просто обдумываю передовой опыт с приложением, которое я разрабатываю. Это простое однооконное приложение, использующее Qt Creator. Он просто запустит QProcess и покажет вывод в поле QTextEdit. Для этого требуется небольшая обработка между выводом QProcess и QTextEdit, но я не знаю, где я должен это сделать, должен ли я создать новый класс для этого или добавить функции-члены и дополнительные сигналы и слоты в мой главное окно? Я не хочу, чтобы главное окно было раздутым и трудным для чтения, но в равной степени я не хочу иметь больше исходных файлов, чем мне действительно нужно.

Есть предположения?


person jonathan topf    schedule 04.06.2011    source источник


Ответы (2)


Класс главного окна может очень легко раздуться всевозможными функциями. Я имел дело с этим сам, так что это очень реальная проблема.

Однако на самом деле это не столько вопрос QT, сколько вопрос объектно-ориентированного проектирования. Суть в том, что ваше окно вывода не обязательно должно быть частью QMainWindow, поэтому, вероятно, оно и не должно быть. Сделайте дисплей виджетом и вставьте его в главное окно. Это намного более гибко, так как если вам когда-нибудь понадобится переместить эту панель вывода по какой-либо причине, она не будет связана с определенной частью программы.

Логика, которая передает данные в эту панель вывода, также должна получить свой собственный класс, отделив ответственность за отображение вывода от ответственности за получение вывода.

Для справки о концепциях, лежащих в основе моего предложения, см. принцип единой ответственности и разделение ответственности.

person cgmb    schedule 04.06.2011
comment
Спасибо, Славик, очень помогло. - person jonathan topf; 05.06.2011

Кроме того, вы можете прочитать на этом ссылка на информацию о делегате представления модели, как я обычно разрабатываю в Qt. Как говорит человек выше, это больше вопрос хорошего дизайна OO.

person Matt    schedule 06.06.2011