当前位置: 代码迷 >> QT开发 >> qt Dialog show()以后未显示
  详细解决方案

qt Dialog show()以后未显示

热度:455   发布时间:2016-04-25 03:00:01.0
qt Dialog show()之后未显示
类A:class A: public QMainWindow   {private: B}
类B:class B: public QWidget    {private: C}
类C:class C: public QDialog    {private: QProgressBar}


在类A中创建类B实例,
调用类B函数B::CallC,使C.show();

但调试下来发现C窗口未显示出来.改为exec()后能正常显示


void A::CallB()
{
    B::CallC();//含代码C::show();无法正常显示,改为C::exec()则能正常显示
    B::other();//较占内存,花费时间>2s
}

------解决思路----------------------
 B::CallC();//含代码C::show();无法正常显示,改为C::exec()则能正常显示
1、你是在堆中定义的窗口,函数执行完毕自然就会释放掉;如果你是通过new出来的窗口,就不会出现这种问题,直到你释放。
2、show():显示一个非模式对话框。控制权即刻返回给调用函数。exec():
显示一个模式对话框,并且锁住程序直到用户关闭该对话框为止。
------解决思路----------------------
你将CallC()函数内的显示控件通过new出来再调用XX->show(),不是将B::CallC();为B->CallC();
------解决思路----------------------
能贴出代码来么?
  相关解决方案