QT中如何在当前打开的所有窗体中,关闭指定的objectName的窗体。
QWidgetList FormList=QApplication::allWidgets();
for(int i=0;i!=FormList.count();++i)
{
QWidget *tmp=FromList.at(i);
if(tmp->objectName=="xxxx")
{
tmp->close();
}
}
这样写可不可以?因为要反复调用这个方法,执行效率会不会很低。
在网上查询,QApplication::allWidgets()必须用new来申请内存,然后手动释放,否则会造成内存泄露,是不是要改成:
QWidgetList *FormList=new QWidgetList(QApplication::allWidgets());
for(int i=0;i!=FormList->count();++i)
{
QWidget *tmp=FromList->at(i);
if(tmp->objectName=="xxxx")
{
tmp->close();
}
}
这样是不是避免了内存泄露的问题 本人小白 希望大牛们帮助一下
上面忘了 delete FormList;
你得首先用setObjectname()设置各个窗口的名字