我正在寻找最佳实践或设计模式来管理Qt应用程序的窗口。
让我解释一下我的意思。假设我有一个具有一些窗口(A,B,C)的应用程序,我需要在window A
内打开window B
并确保创建一个有效的新window A
实例每次调用时的参数,最后当需要显示窗口时,如果有其他人创建新实例,则将现有实例放在前面。
当然,真实世界的应用程序要复杂得多,并且有更多的窗口和限制,因此我不想在整个代码中传播我的窗口管理操作,而是将它们保存在静态WindowManager
类中。 (实际上这个类是单例,但我正在考虑将其改为静态类)
WindowManager类为系统中的每个窗口保存(私有)QSharedPointer
,因此我可以轻松地从代码中的任何位置操作所有窗口。当我需要显示window X
时,我只需调用WindowManager::showX(params)
,所有检查和初始化都在该代码中进行。此外,我有像WindowManager::minimizeX()
这样的方法来处理某些逻辑,显示系统托盘消息,然后最小化窗口。
这是一个普遍的需求,是否有解决问题的一般模式?你们如何管理应用程序的窗口?我所做的(静态WindowManager类)是否可以接受?
<小时/> 编辑:应用程序是系统托盘应用程序,因此窗口之间没有父子关系;相反,它们彼此独立,通常用户通过(全局)热键调用任何窗口。然而,在一个窗口中我需要打开另一个但仍然不能是父母和孩子的情况。