QT中如何在当前打开的所有窗体中,关闭指定的objectName的窗体。

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()设置各个窗口的名字