qt窗口跳转有关问题
qt窗口跳转问题我设置了三个窗口,一个主窗口Main,在主窗口里声明了B窗口的指针对象 B *b;在Main窗口点击按
qt窗口跳转问题 我设置了三个窗口,一个主窗口Main,在主窗口里声明了B窗口的指针对象 B *b;在Main窗口点击按钮之后show出B窗口 b = new B; b->show(); this->close(); 然后在Main的析构函数里delete了对象b,紧接着在窗口B中close的时候出现段错误,调试的时候发现原因是Main里delete了对象b。想请问窗口跳转还有其他方法吗?[最优解释] 你原来的问题可以归结为 在main的入口处 设置一个“超级”对象,这个对象的生存期是比你要显示和隐藏的那2个对象的生存期长的 由这个超级对象来负责同步2个窗口的隐藏和显示 你原来的问题 是2个widget对象互相耦合 比如 A 包含 B 但B创建又依赖A A在创建B之前又已经被释放[其他解释] 干脆就不要delete只要hide不要的窗口,show需要的,只是占用内存多些,现在的PC内存都很大,不差这点内存。[其他解释] 你应该在B的关闭事件中delete掉自己[其他解释]
引用: 干脆就不要delete只要hide不要的窗口,show需要的,只是占用内存多些,现在的PC内存都很大,不差这点内存。 我是放在ARM板上跑的程序 内存吃紧 希望做到严谨一些 有没有其他好的窗口跳转方法
[其他解释] 引用: 你应该在B的关闭事件中delete掉自己 我没有重写closeEvent 就是弄了个按钮 添加了信号槽 在点击按钮后close掉B窗口 析构函数里面没有delete掉B窗口自己 我要delete this吗?
[其他解释] 再问一下 就是我在弹出B窗口、close掉Main窗口的时候,Main的析构函数用不用delete掉B对象
[其他解释] 每个窗口的构造函数里增加一行代码:
setAttribute(Qt::WA_DeleteOnClose);
xxxxxxshowwindow()//显示新窗口的槽
{
xxxxwindow *w = new xxxxwindow;
w.show();
close();
}
[其他解释] 引用: 每个窗口的构造函数里增加一行代码: setAttribute(Qt::WA_DeleteOnClose); xxxxxxshowwindow()//显示新窗口的槽 { xxxxwindow *w = new xxxxwindow; w.show(); close(); } 楼上的 就是这个xxxxwindow 定义的*w 我需要去delete它吗?还有我发现我的主窗口跳转到B窗口的时候 在退出B窗口时程序执行了主窗口的析构函数 主函数的析构函数里面delete了B窗口的对象。此时出现了段错误。还有若是在主窗口定义Qt::WA_DeleteOnClose,窗口无法跳转。 纠结中
[其他解释] 你不要在主窗口main里维护b对象
可以另外创建一个全局对象来负责这些窗口间的同步
比如
QWidgetHandler *handler = new QWidgetHandler;
QObject::connect( main,SIGNLA(close()),this,SLOT(handleMainClose());
然后在handleMainClose里处理主窗口的隐藏事件
[其他解释] 引用: 你不要在主窗口main里维护b对象 可以另外创建一个全局对象来负责这些窗口间的同步 比如 QWidgetHandler *handler = new QWidgetHandler; QObject::connect( main,SIGNLA(close()),this,SLOT(handleMainClose()); 然后在handleMainClose里处理主窗口的隐藏事件 谢谢你的回复 对于这种方法 那我在handleMainClose函数里面要操作什么?show出新窗口吗?是不是也用new?
[其他解释] 是否可以在new出一个窗口对象时直接设置窗口关闭后自动释放?
B *b = new B;
b->setAttribute(Qt::WA_DeleteOnClose,true);
b->show();