qt学习笔记——全局变量报错切换窗口时回收内存
Posted tear-tear-tear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt学习笔记——全局变量报错切换窗口时回收内存相关的知识,希望对你有一定的参考价值。
- 全局变量定义时报错:重复定义
解决方法:
1.不把全局变量定义现在头文件里;
2.用static修饰,代表只能在这个文件使用
static int a;
- 切换窗口时回收内存
在构造函数中使用语句
this->setAttribute(Qt::WA_DeleteOnClose);//在接收到close时回收内存
另外注意用new申请空间才适合用这个,如果是直接定义则会连主窗口一起回收,程序报错
用new的情况,用close后正常:
private: Widget2 *w2;//创建一个新的widget
Widget2::Widget2(QWidget *parent) : QWidget(parent) { this->setAttribute(Qt::WA_DeleteOnClose);//在接收到close时回收内存 }
w2 = new Widget2;//被回收的只是这一块内存 connect(w2, &Widget2::sent_back2main, this, &Widget::w2_back2main); w2->show(); this->hide();
直接定义新widget的情况,用close后报错:
private: Widget2 w2;//创建一个新的widget
Widget2::Widget2(QWidget *parent) : QWidget(parent) { this->setAttribute(Qt::WA_DeleteOnClose);//在接收到close时回收内存 }
connect(&w2, &Widget2::sent_back2main, this, &Widget::w2_back2main); w2.show(); this->hide();
以上是关于qt学习笔记——全局变量报错切换窗口时回收内存的主要内容,如果未能解决你的问题,请参考以下文章