1.我在.h文件中创建了控件的指针,然后再构造函数里面给指针分配,编译没有问题,放到板子上就出现段错误,试过不在.h文件里面而在构造函数里面创建指针,运行之后也会出现段错误 如图:
2.我看到网上的资料,需要用到多窗口时都是重新建一个类(sub_widget),然后在主窗口(main_widget)定义一个新类的对象, 通过hide()和show()分别隐藏和显示窗口
我想要释放资源所以把hide换成了close,也在sub_widget里面设置了Qt::WA_DeleteonClose这个参数,可是第二次进入sub_widget的时候就会挂掉。
请问有什么其他方法可以在关闭窗口的时候同时释放掉资源吗,或者是我上面的这种方法用的不恰当
离线
close之后要delete那个widget/window指针分配的对象
close之后如果再用这个指针需要再new一个新widget/Window给指针
离线
close之后要delete那个widget/window指针分配的对象
close之后如果再用这个指针需要再new一个新widget/Window给指针
你好,我按照你说的测试了一下,代码如下,这样子依然会有错误,如果析构函数里面不delete sub就没有问题,请问该怎么修改呢
离线
为啥要this->close();
离线
为啥要this->close();
sub_widget 是一个新的窗口,按钮按下之后的操作不应该是把Main_widget 关掉然后再去打开新的窗口吗
离线
心情复杂 说:为啥要this->close();
sub_widget 是一个新的窗口,按钮按下之后的操作不应该是把Main_widget 关掉然后再去打开新的窗口吗
你是通过Main_widget来创建sub_widget的 那你第一次点按钮之后就把他close了 那以后咋办 难道你的按钮只用一次的?
离线
Eden 说:心情复杂 说:为啥要this->close();
sub_widget 是一个新的窗口,按钮按下之后的操作不应该是把Main_widget 关掉然后再去打开新的窗口吗
你是通过Main_widget来创建sub_widget的 那你第一次点按钮之后就把他close了 那以后咋办 难道你的按钮只用一次的?
你好,我是想实现这个功能:
有Main,Sub两个界面,界面上分别有一个按钮, 按下界面Main的按钮之后,跳转到Sub界面同时把Main界面的资源释放掉,再Sub界面按下按钮之后重新绘制Main界面同时把Sub界面的资源释放
我的理解是:在Main界面按下按钮时,使用close关掉这个界面,同时创建sub界面,这样子的话按钮应该就是一次性的,按完之后这个界面关闭,跳到其他界面,如果不用close的话是不是就是 sub界面把main界面覆盖了而已,Main界面还是存在的
上面在析构函数里面delete sub感觉好像是不对的,因为close会触发它的析构函数,但是这样子不知道在哪里释放sub这个指针
您方便留个联系方式吗,我好向您请教
离线
心情复杂 说:Eden 说:sub_widget 是一个新的窗口,按钮按下之后的操作不应该是把Main_widget 关掉然后再去打开新的窗口吗
你是通过Main_widget来创建sub_widget的 那你第一次点按钮之后就把他close了 那以后咋办 难道你的按钮只用一次的?
你好,我是想实现这个功能:
有Main,Sub两个界面,界面上分别有一个按钮, 按下界面Main的按钮之后,跳转到Sub界面同时把Main界面的资源释放掉,再Sub界面按下按钮之后重新绘制Main界面同时把Sub界面的资源释放
我的理解是:在Main界面按下按钮时,使用close关掉这个界面,同时创建sub界面,这样子的话按钮应该就是一次性的,按完之后这个界面关闭,跳到其他界面,如果不用close的话是不是就是 sub界面把main界面覆盖了而已,Main界面还是存在的
上面在析构函数里面delete sub感觉好像是不对的,因为close会触发它的析构函数,但是这样子不知道在哪里释放sub这个指针您方便留个联系方式吗,我好向您请教
请教倒不用,我也是个Qt菜鸟。:rolleyes:
可以提供点思路给你
你可以在A对象的btn的槽函数里:定义B对象 绑定信号A1到 B的槽 B1 B->Show(); 发送信号A1 将A对象的Close和Delete放到B的槽函数里
反之亦然
离线
按照楼主描述的需求,可以创建一个继承自qobject类的管理类,
它持有mainwindow和subwidget对象指针,实例化mainwindow并显示,创建2个槽函数,分别响应mianwindow和subwidget关闭信号,槽函数里实例化另一个窗口并显示,同时也要再次连接信号槽。2个窗口设置关闭自动释放内存。
离线
Eden 说:心情复杂 说:你是通过Main_widget来创建sub_widget的 那你第一次点按钮之后就把他close了 那以后咋办 难道你的按钮只用一次的?
你好,我是想实现这个功能:
有Main,Sub两个界面,界面上分别有一个按钮, 按下界面Main的按钮之后,跳转到Sub界面同时把Main界面的资源释放掉,再Sub界面按下按钮之后重新绘制Main界面同时把Sub界面的资源释放
我的理解是:在Main界面按下按钮时,使用close关掉这个界面,同时创建sub界面,这样子的话按钮应该就是一次性的,按完之后这个界面关闭,跳到其他界面,如果不用close的话是不是就是 sub界面把main界面覆盖了而已,Main界面还是存在的
上面在析构函数里面delete sub感觉好像是不对的,因为close会触发它的析构函数,但是这样子不知道在哪里释放sub这个指针您方便留个联系方式吗,我好向您请教
请教倒不用,我也是个Qt菜鸟。:rolleyes:
可以提供点思路给你
你可以在A对象的btn的槽函数里:定义B对象 绑定信号A1到 B的槽 B1 B->Show(); 发送信号A1 将A对象的Close和Delete放到B的槽函数里
反之亦然
好的,谢谢您,我去试一下
离线
按照楼主描述的需求,可以创建一个继承自qobject类的管理类,
它持有mainwindow和subwidget对象指针,实例化mainwindow并显示,创建2个槽函数,分别响应mianwindow和subwidget关闭信号,槽函数里实例化另一个窗口并显示,同时也要再次连接信号槽。2个窗口设置关闭自动释放内存。
好的,我去试一下,谢谢您
离线