我创建了一个传统的Qt(基于小部件)GUI,如下所示:MainWindow::MainWindow(parent) : QMainWindow(parent)
这是由Qt Creator设计的形式(mainwindow.ui
),又名Design Mode
。一切正常。但是包含所有小部件的GUI代码,初始化相应的模型和功能都会被放弃。我想重构小单位。我提出的事情:
MyTableView::QTableView
包含专用模型,以及模型和窗口小部件之间的信号/槽处理。这减少了MainWindow
中的代码量。但是,我确实失去了通过Qt Creator的Design mode
设计GUI的能力。那么,我怎样才能更好地划分我的GUI类?
如果您仍希望通过派生窗口小部件来取消窗口小部件的初始化,则可以在Qt设计器中使用“promote to ...”选项。脚步:
借了一张照片:
您可以创建自己的Qt小部件并使用QtDesigner注册它们。那么你是否可以在表格上使用它们仅仅是QLabel和朋友。见cpp
在最近的一个项目中,我们有非常严格的解耦要求(特别是与Qt没有太强关联)。我们过去基于类似MVC的模式做的是:
请注意,此结构可能不适合小型项目。