QT 多窗体转换

ailinty 2010-09-08 05:55:29
已知窗体A,B,C,D,E,F,G,H,I,J,K....(均全屏showFullScreen())
实现效果为:初始化显示窗体为A,当点击A时重写mousePressed(),显示出B,给B添加鼠标点击事件,当点击B时显示出C,依次类推。然后当点击K时回到A,循环这样。
设计方案一:在A里面new 窗体B,然后让A->hide(),让B->showFullScreen();在B里面new窗体C, 然后让B->hide(),让C->showFullScreen()....依次类推。
设计方案二:在A里面利用setCenterWiget(A),让其显示A,当点击A时,setCenterWidget(B),当再点击A时, setCenterWidget(C),依次类推。

分析利弊:方案一:不利于维护。显得很复杂。
方案二:在每次setCenterWidget()时,之前的centerWidget会自动释放掉。必须每次都重新new B(), setCenterWidget(B);


如何设计最好?方案三:大家给方案吧。
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
车太靓 2011-01-06
  • 打赏
  • 举报
回复
疑问:您的方案1会不会很耗资源阿??
车太靓 2011-01-06
  • 打赏
  • 举报
回复
继承qstackedwidget,各个页面对应一个id,使用<map>映射,
纸上谈兵!
ailinty 2010-09-09
  • 打赏
  • 举报
回复
谢谢。我试一试。
qter_wd007 2010-09-08
  • 打赏
  • 举报
回复
使用QStackedWidget不错的,不过,这个类是不被nokia所推荐的了,不再提供后续支持的类。
ailinty 2010-09-08
  • 打赏
  • 举报
回复
2楼回答好深奥啊。学习了,等我研究下。谢谢。
3楼回答的,我也想到了,我也写了一些封装函数。大致一个意思。维护起来很方便。的确,谢谢。
yanchong 2010-09-08
  • 打赏
  • 举报
回复
建议楼主写一个封装函数,传递参数,然后在该封装函数中,根据传递的参数进行判断应该显示哪一个窗体。这样在维护的时候只需要更改封装函数就可以了,易于维护。
lefttime 2010-09-08
  • 打赏
  • 举报
回复
如果是像方案二这样界面的切换的话, 启用QStackedWidget会更容易些, 甚至用QWizard也不错~``

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧