如何简化Qt MainWindow类?

4

在GUI中,例如Qt应用程序中的MainWindow类通常非常庞大,包括所有菜单、工具栏、中央窗口和其他小部件以及与各种事件对应的许多成员函数和许多其他成员便利函数来执行这个或那个任务。

有没有好的策略来简化这个类呢?

非常感谢!

Jayden

1个回答

4

您可以像分解任何大组件一样:

将功能和职责抽象(分解)为子组件;重复此过程,直到达到适当的细粒度。

如果没有具体细节,很难更加精确。


感谢您提出的非常好的观点。但是,由于主窗口类的成员函数通常使用多个组件,因此在主窗口类上执行此操作似乎很困难。例如,将主窗口分解为组件0到5。将相关函数放置在组件0中。但是,该函数将使用其他一些组件。如何让组件0访问其他组件?一种方法是在组件0中存储指向其他组件的指针。另一种方法是在组件0中存储指向主窗口的指针,并使它们在主窗口类中可访问。哪种方法更好?或者还有其他更好的方法吗? - user1899020
通过将主窗口的引用传递到每个子组件中,然后再传递到它的子组件中,以此类推 - 这样每个组件都可以访问任何其他组件。或者,如果您可以保证只有一个主窗口实例,则可以从单例提供对其的访问。 - cmannett85
这是一个不错的方法。但通常主窗口中的子组件是私有的。将它们设为可访问是否安全? - user1899020
你需要挑选哪些组件可以被暴露,哪些不能。通常不必暴露对象本身,而是它所代表的行为。举个非常简单的例子:你不会暴露窗口拥有的QPushButton,但你会暴露它按下时触发的槽函数。 - cmannett85

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接