当前位置:编程学习 > wap >>

请问如何实现多窗口的切换

这几天被这个折腾死了,我用的是QT2.2的。有一个是继承QDialog的class A,还有两个是继承QWidget的classB和classC。classA是主画面,在A画面上有个按钮button_b,想通过点击button_b进入class B的页面。然后输入密码,如果密码正确就再转到C画面设置参数,然后设置完参数再返回主画面A。
--------------------编程问答-------------------- 新建一个工程,继承Qdialog,添加新文件,选择添加设计师界面类,基类选择qwdiget,在dialog.h中添加头文件包含#include "form.h" 添加私有变量Form *A
在button的单击槽函数内添加如下代买: 
    A = new Form();
    A->show();
即可实现所需功能 --------------------编程问答--------------------
引用 1 楼 hn307165411 的回复:
新建一个工程,继承Qdialog,添加新文件,选择添加设计师界面类,基类选择qwdiget,在dialog.h中添加头文件包含#include "form.h" 添加私有变量Form *A
在button的单击槽函数内添加如下代买: 
    A = new Form();
    A->show();
即可实现所需功能

谢谢兄弟:)
但是这样的话就会每点击一次button就会new 一个Form的实例,这样重复多次后会有内存泄漏的问题吧? --------------------编程问答-------------------- 一次性把3个东西都new出来,然后针对不同情况show和hide就可以了 --------------------编程问答--------------------
引用 3 楼 dxms8 的回复:
一次性把3个东西都new出来,然后针对不同情况show和hide就可以了

三个页面的关系是这样的:
Class A :QDialog
{
}
Class B:QWidget
{
}

Class C:QWidget
{
}

Class A是这页面,在A的构造函数里new Class B和Class C后有一个问题,就是new ClassB 后会调用B的构造函数显示的是B的页面,new Class C后会显示C的页面。也就是说运行程序后,首先映入眼帘的是页面C而不是主页面A。我曾尝试在B和C的构造函数中添加hide(),然后在A的button中调用B和C的show(),但是这样做却显示不出来对了,不知道为啥? --------------------编程问答-------------------- 我觉得你的A,B,C是同级关系丫,为什么要在A里面new呢。。。
在ABC共同的上一层new不好么。。。
不过如果你实在要在A里面new的话啊,new完后再hide也是可以的,但是在A的构造函数里,而不应该是BC的构造函数。
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,