首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt: QStackedWidget解决方案

Qt: QStackedWidget解决方案
EN

Stack Overflow用户
提问于 2010-04-15 00:08:31
回答 1查看 826关注 0票数 0

我正在构建一个Qt应用程序,它有大约30个不同的视图(QWidgets)。我的想法是使用QStackedWidget来简化应用程序中不同视图之间的切换。我有两种不同的解决方案来实现这一点,并在用户浏览应用程序时尽可能少地使用内存。

解决方案1:每次我需要显示一个视图时,我都会检查它是否已经在堆栈中。(用户可能多次打开同一视图,可能是显示数据库中某项的视图)。如果视图已经在堆栈中,则不需要重新创建它,我只需显示视图即可。

这个解决方案的好处是我重用了视图(小部件),因此它们只需要创建一次。这很好,因为用户每次显示视图时,UI和其他东西看起来应该是一样的,所以为什么不重用它呢?这种解决方案的问题是每个视图都有子视图。也许是一个对象,一个包含对象或其他东西的QList。Qt的一个好处是你可以使用父-子机制,这样当父对象被删除时,子对象也会被删除。因为我从不删除父(视图),所以我需要自己处理这个问题,因为在显示视图时,可能需要从不同的时间删除子视图。(也许视图会显示一个包含对象的列表,并且每次显示视图时,都应该从数据库更新该列表。)

解决方案2:每次我需要显示一个QWidget时,我都会创建一个新的并显示它。当它不再显示时,我将其从内存中删除。

这是一个非常简单的解决方案。当我删除没有显示的视图时,视图和它的子级都应该从内存中删除,这样就不会增加内存,对吗?

你推荐哪一种解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-15 00:22:05

如果内存如此紧张,最好的办法就是根据需要实例化和删除。

如果您遵循MVC型架构,那么您的数据模型应该与视图不同,因此QWidget类不应该在不使用时保留对数据模型的引用。也就是说,当不再需要您的QWidget类时,您可以保持它的实例化,但是“无效”对数据模型的引用(我假设它管理自己的内存)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2639035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档