Qt_errors
Qt5线程错误:
QThread: Destroyed while thread is still running(执行runThread->exit(0))
原因:主进程结束,但是线程还没有执行完毕
解决方法: 如run中是一个循环函数,及加上终止条件即可
例:
~myThread(){ flag = false; quit(); wait(); }
run() { while(flag){ } } //即析构后不满足循环条件结束线程
Qt为什么 关闭窗口结束主进程
自行判断: 当有一个GUI窗口程序时,关闭该窗口,结束整个程序
析构导致程序崩溃
1.栈对象的自动释放
Qt 保证的是,任何对象树中的 QObject对象delete的时候,
如果这个对象有parent,则自动将其从parent的children()列表中删除;
如果有孩子,则自动delete每一个孩子。
Qt保证没有QObject会被delete 两次,这是由析构顺序决定的。
(标准 C++ 要求,局部对象的析构顺序应该按照其创建顺序的相反过程)
例:
{//程序正常执行:
QWidget window;
QPushButton quit("Quit", &window);
}
{//程序崩溃(quit析构两次):
QPushButton quit("Quit");
QWidget window;
quit.setParent(&window);
}