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

请教一个Qt父子widget的问题,谢谢

4
回复
7987
查看
[复制链接]
累计签到:8 天
连续签到:1 天
来源: 2017-6-12 11:37:13 显示全部楼层 |阅读模式
1Qter豆
才开始学习Qt,目前遇到一个widget父子窗口的问题。一个button控制弹出一个widget界面。当click其他button时,关闭或隐藏当前的widget。我想利用这对象的new和delete控制新widget的显示和隐藏。尝试了好多种方式,都没法实现。麻烦知道的大牛,不吝赐教谢谢! 代码和界面效果见上传图片。

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2017-6-12 15:48:12 显示全部楼层
第一,显示、隐藏 用 new 和 delete 有点费劲,用 hide() 和 show() 函数比较容易,第二,你在 new 了 widget 对象之后,使用move 函数改变控件的位置,但是好像没有把控件放到主控件的布局当中去,所以,是不是显示不了,或者后者进来的时候被覆盖,可能是这样哦~
回复

使用道具 举报

累计签到:8 天
连续签到:1 天
2017-6-12 16:39:04 显示全部楼层
Since 发表于 2017-6-12 15:48
第一,显示、隐藏 用 new 和 delete 有点费劲,用 hide() 和 show() 函数比较容易,第二,你在 new 了 widg ...

主控件中没有用布局。嗯,最后的情况相连接的widget覆盖了。
我现在的实现方案是没个button对应widget声明为成员变量,每次click时候,delete非NULL的成员变量。
但是又有问题两次点击同一个button。由于是重新new的对象,无法保存缓存的对象。
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2017-6-14 09:24:13 显示全部楼层
zhongyong 发表于 2017-6-12 16:39
主控件中没有用布局。嗯,最后的情况相连接的widget覆盖了。
我现在的实现方案是没个button对应widget声 ...

如果每个按钮只是一个widget的话,成员变量定义对应数量的widget变量(也可用hash或map进行key-value对应保存,量多的话),用于保存。
接下来有两种方案:
1、主界面构造时,顺便把所有子窗口构建,这样在按钮事件中只处理显示和隐藏即可;
2、按钮事件中,判断对应的wiget成员变量为空,则创建wiget并显示;否则delete后在创建并显示(或者不为空,则处理显示或隐藏)。只要保证一个变量一个widget就行。

点评

点赞,条理很清晰,  发表于 2017-8-14 17:28
回复

使用道具 举报

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

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