我创建了一个传统的 Qt(基于小部件)GUI,如下所示:MainWindow::MainWindow(parent) : QMainWindow(parent)
这是由 Qt Creator 设计为窗体 (mainwindow.ui
),又名 设计模式
。一切正常。但是包含所有小部件、初始化相应模型和功能的 GUI 代码会退出很长时间。我想重构为小单位。我想出的东西:
- 我尝试使用专门的(派生的)小部件。示例:创建的
MyTableView::QTableView
包含专用模型,以及模型和小部件之间的信号/槽处理。这减少了MainWindow
中的代码量。但是,我确实失去了通过 Qt Creator 的设计模式
设计 GUI 的能力。 - 到目前为止,我想到的最好的事情就是泄露源代码(多个
cpp
文件)。它仍然代表一个类,但一个文件中的代码更少。
那么,我怎样才能更好地划分我的 GUI 类?
最佳答案
如果您仍想通过派生小部件解耦小部件的初始化,您可以使用 Qt 设计器中的“提升到...”选项。步骤:
- class MyTableView : public QTableView {},因此 TableView 的初始化被移至 MyTableView 的构造函数。
- 在 Qt Designer 中,打开 ui 窗体 (MainWidow.ui),然后在其上拖放一个 QTableView;
- 鼠标右键单击QTableView,在提示菜单中,有一个“提升为”选项,打开它
- 在“promoting widget”对话框中,指定自定义QTableView的类名和头文件,比如MyTableView、MyTableView.h。此步骤需要现有的自定义类和头文件。
借用一张图:
关于c++ - Qt GUI 小部件源文件的重构/分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22213178/