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

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

qt

4个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐