gpt4 book ai didi

c++ - 删除qtabwidget

转载 作者:行者123 更新时间:2023-11-28 07:46:17 25 4
gpt4 key购买 nike

我的程序一直崩溃,返回码为 0。原因在我的 qtabwidget 中的某处,但我找不到错误。

 QTabWidget *layout_tabs;

// create tabs
void myclass::fill_tabs(void)
{
kill_tabs(); // remove old tabs
layout_tabs = new QTabWidget();

// program adds content into a few tabs, like:
// widgets created, content created, put into layout, put into widget..
layout_tabs->addTab(widget, "description");
layout_tabs->addTab(widget2, "description2");

layout_tabs->show();
}

void myclass::kill_tabs(void)
{
if(layout_tabs==nullptr)
return;
layout_tabs->hide();

QWidget *window;

for ( int i=layout_tabs->count()-1; i>=0; --i)
{
window = layout_tabs->widget(i); // remember widget
layout_tabs->removeTab(i); // remove tab
free(window); // remove widget
}

free(layout_tabs); // remove qtabwidget
layout_tabs=nullptr;
}

filltabs() 函数用了几次。旧的 tabwidget 被销毁并创建一个新的。如果我不删除选项卡小部件并不重要,但只删除选项卡。程序仍然以返回码 0 退出。

最佳答案

您调用了 free(layout_tabs) 但您使用 operator new() 分配了它。您应该改为使用 delete layout_tabs 取消分配它。我没有看到你的 window 变量是如何分配的,但你应该检查它是否也应该用 operator delete() 释放,或者你的 QTabWidget 拥有它的内存(即它是否负责管理该内存)。

关于c++ - 删除qtabwidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14824603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com