解决方案:
- 如果采用栈上生成对象的方式,即
QWidget w
。函数执行完后对象自动销毁,自然也就没有了。除非在父函数内生成或作为类成员记录,以让子函数结束后对象不自动销毁。 - 如果采用堆内存分配对象的方式,即
QWidget* w = new QWidget
。函数执行完后对象不会自动销毁,在不设置widget的parent的情况下(设置后widget不会单独出现),应该是不会消失的,但要小心内存泄露的问题。注意,这里采用智能指针如sharedptr还是不可以,因为函数体结束后,智能指针对象销毁,伴随着堆上分配的对象的同时销毁,可以采用方法1的方式进行解决。