Я создал традиционный графический интерфейс Qt (на основе виджетов), что-то вроде этого: MainWindow::MainWindow(parent) : QMainWindow(parent)
Это разработано Qt Creator как формы (mainwindow.ui
) ака Design Mode
, Все отлично работает Но код GUI со всеми виджетами, инициализацией соответствующих моделей и функционалом становится длинным. Я хотел бы провести рефакторинг для небольших подразделений. Вещи, которые я придумал:
MyTableView::QTableView
содержит специализированную модель, а также обработку сигнала / слота между моделью и виджетом. Это уменьшает количество кода в MainWindow
, Тем не мение, Я теряю возможность разрабатывать графический интерфейс через Qt Creator’s Design mode
, cpp
файлы). Он по-прежнему представляет один класс, но меньше кода в одном файле.Итак, как мне лучше разделить мой класс GUI?
Если вы все еще хотите отсоединить инициализацию виджетов производными виджетами, вы можете использовать опцию «продвинуть в …» в Qt designer. шаги:
Заимствовал картину:
Вы можете создавать свои собственные виджеты Qt и регистрировать их в QtDesigner. Тогда вы сможете использовать их на формах в качестве простых QLabels и друзей. Увидеть эта ссылка
В недавнем проекте у нас были довольно жесткие требования по разобщению (особенно, если бы мы не были слишком сильно связаны с Qt). То, что мы привыкли делать на основе MVC-подобного шаблона:
Обратите внимание, что эта структура может не подходить для небольших проектов.