delete qtabwidget
delete qtabwidget
本文关键字:qtabwidget delete 更新时间:2023-10-16
我的程序不断崩溃,返回代码为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()函数被使用了几次。旧的选项卡小部件将被销毁,并创建一个新的。如果我不删除选项卡小部件,而只删除选项卡,那也没关系。程序仍然退出,返回代码为0。
您调用free(layout_tabs)
,但使用operator new()
进行分配。您应该使用delete layout_tabs
解除分配它。我不知道window
变量是如何分配的,但您应该检查它是否也应该与operator delete()
解除分配,或者您的QTabWidget
是否拥有其内存(即,它是否负责管理该内存)。
将QApplication::quitOnLastWindowClosed
设置为false。
#include <QApplication>
// ...
qApp->setQuitOnLastWindowClosed (false);
或者,您可以将选项卡的容器(主窗口/主窗口小部件)设置为Qt::WA_QuitOnClose
的属性设置为false。
myWidget->setAttribute(Qt::WA_QuitOnClose, false);
其中任何一个都应该修复它。返回"0"也不是崩溃。零通常表示正常退出。
http://qt-project.org/doc/qt-4.8/qapplication.html#quitOnLastWindowClosed-道具
http://qt-project.org/doc/qt-4.8/qt.html#WidgetAttribute-枚举
相关文章:
- 运算符C++ "delete []"仅删除 2 个前值
- Qt和C++:将QLineEdit添加到QTabWidget中
- 通过选项卡的文本设置QTabWidget顺序
- g++用户定义的动态链接库上的全局new和delete运算符
- 为什么"delete"关键字不删除节点?
- "delete"在 C++ 中实际上做了什么?
- 析构函数和'delete'之间的区别
- 如何知道何时调用删除以及何时调用 delete[] C++?
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 体系结构x86_64的未定义符号:std:terminate(),typeinfo,运算符delete[],运算符new
- 析构函数中的"delete this"
- 为什么数组大小信息可用于"sizeof"运算符和 delete[] 运算符,但在将数组作为参数传递到
- 即使在使用 delete[] 后仍保留的元素
- 如果我在下面的代码片段中添加"delete[] d;",为什么我得到零?
- C++原始指针和"delete"
- 为什么 std::vector 使用 std::分配器而不是运算符 new 和 delete?
- 重载 new 和 delete 会导致 valgrind 错误
- 为什么"delete"操作员给我访问权限冲突
- 在 ui 文件中隐藏 QTabWidget 中的单个选项卡窗格?
- delete qtabwidget