找回密码
 立即注册
收起左侧

在两个界面切换时如何更新某个界面显示的内容?

3
回复
8498
查看
[复制链接]
累计签到:11 天
连续签到:1 天
来源: 2014-6-18 10:03:11 显示全部楼层 |阅读模式
5Qter豆
请教各位大侠,下面这个需求用什么方法实现比较合适:
一个GUI程序里有两个界面(界面1,界面2)需要来回切换,其中界面2 某个区域是用来显示一个可能被随时修改的 txt 文件内容,请问怎么在界面1 2互相切换后更新 界面2 的这块区域以正确显示这个 txt 文件的内容?

现在我的方法:
把这个txt文件读到一个 QString中,用界面2 中的一个lable通过setText 把这个txt文件的内容显示出来。但这样的话,好像行不通。因为我把这段代码放到了界面2 的UI构造函数中了,导致只能在第一次去画 界面2的UI 时把 txt 文件给读取并显示出来;在切到界面1 并 修改 txt 文件之后再切回界面2 就不能正确显示已经修改了的  txt  文本的内容了。
界面切换是通过两个界面UI的 close 和 show 函数来实现:
界面1->close();界面2->show();
是不是该用别的控件来显示 txt 文件的内容?或者 重载 界面2 的 show 函数,在里边重新更新界面2的UI?  

新手上路,请各位不吝赐教。

最佳答案

查看完整内容

按照我们的做法: 1、快速的方法(其实是懒的方法) (1)设定每个TXT界面的信号槽,若TXT内容发生变化时,触发界面更新信号,界面1和界面2先后show(); (2)设定2个子界面相互激活信号槽,当发生切换时,触发界面更新信号,界面1和界面2先后show()。 这种方案实现简单,但操作系统或桌面系统不甚理想时,可能会发生闪烁; 2、在主界面程序模块中,设置子界面链表,对主界面显示缓存进行接管,根据各界面显示内容和 重叠进行计算 ...
回复

使用道具 举报

尚未签到

2014-6-18 10:03:12 显示全部楼层
按照我们的做法:
1、快速的方法(其实是懒的方法)
(1)设定每个TXT界面的信号槽,若TXT内容发生变化时,触发界面更新信号,界面1和界面2先后show();
(2)设定2个子界面相互激活信号槽,当发生切换时,触发界面更新信号,界面1和界面2先后show()。
这种方案实现简单,但操作系统或桌面系统不甚理想时,可能会发生闪烁;
2、在主界面程序模块中,设置子界面链表,对主界面显示缓存进行接管,根据各界面显示内容和
重叠进行计算处理,当发生切换或各子界面内容发生变化时,计算最终叠加在主界面显示缓存的内容,
最后一次性将显示缓存投射到操作系统进行显示。
这种方案复杂一点,但全面解决闪烁等问题,效率也较高,特别是对内存紧张的应用系统。
祝好运。
begboy
参与人数 1人气 +1 收起 理由
another_qt + 1 多谢回复。

查看全部评分总评分 : 人气 +1

回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2014-6-18 21:59:49 显示全部楼层
解决了;在界面2里重载 paintEvent 函数即可;在paintEvent 中重新调用 需要刷新的代码即可。
回复

使用道具 举报

尚未签到

2014-6-20 14:14:30 显示全部楼层
恭喜恭喜。
能解决问题是开心的事。
begboy
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了