类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();
------解决思路----------------------
能贴出代码来么?