首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

qt窗口跳转有关问题

2012-12-21 
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();

热点排行