• 7145阅读
  • 5回复

为什么窗体启动的时候一闪而过 [复制链接]

上一主题 下一主题
离线lugaideath
 

只看楼主 倒序阅读 楼主  发表于: 2009-11-02
在main.cpp 里面有:

void init()
{
    if(某条件)
    {
        mydialogA a;
        a.show();
    }
    else
    {
        mydialogB b;
        b.show();
    }
}

在main里面调用该方法:
init();
a.exec();

结果程序启动的时候,窗体一闪而过,为什么会这样?

而我单独抽取出来
mydialogB b;
b.show();
a.exec();

这样是可以的
离线dbzhang800

只看该作者 1楼 发表于: 2009-11-02
不妨找本C++ 的书,看看变量作用域相关的章节
离线lugaideath

只看该作者 2楼 发表于: 2009-11-02
你的意思是说我的窗体过了那方法,都过了作用域,都被注销掉?
但我把方法的内容移到main里面同样是一闪而过
离线dbzhang800

只看该作者 3楼 发表于: 2009-11-02
引用第2楼lugaideath于2009-11-02 11:50发表的  :
你的意思是说我的窗体过了那方法,都过了作用域,都被注销掉?
但我把方法的内容移到main里面同样是一闪而过


函数的作用域考虑了,块作用域(复合语句的作用域)你还是要考虑的

题外,还是建议找本C++书好好看看
离线yanglisun
只看该作者 4楼 发表于: 2009-11-02
临时申请的变量再栈空间,函数执行完毕以后会释放掉..
把你放再main中的贴出来
我觉得还是精通c语言以后,再搞C++
离线dancindream

只看该作者 5楼 发表于: 2009-11-02
如果你的mydialogA和B都是继承QDialog
直接

        mydialogB b;
        b.show();
        b.exec();

QDialog里有exec

调用完show则为显示窗体
然后exec建立消息循环
和MFC一样~
快速回复
限100 字节
 
上一个 下一个