QtreeWidgetItem的QComboBox“委托” 段错误

风声边界 2011-04-27 11:58:29
使用QTreeWidget显示编辑窗体属性,每个QTreeWidgetItem代表一个属性
不是很熟悉QTreeWidgetItem的委托,就在QTreeWidgetItem的单机事件中,设置该item的ItemWidget,
例如 字体族,有QFontComboBox,关联了QFontComboBox的actived(int)信号到QTreeWidget,就是选择字体族后,QTreeWidget会removeItemWIdget,然后setText为选择的字体族,简单测试没有问题,放到工程里
在QObjectPrivate::isSIgnalConnect(uint signal_index)const
{
return signal_index >= sizeof(connectedSIgnals)*8
|| (connectedSignals[signal_index >> 5] & (signal_index & 0xlf))//此处报段错误,跟踪signal_index 为5
...................
}
不知道为啥出这个问题,有没有遇到该类型段错误的,指点
...全文
165 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
风声边界 2011-04-29
  • 打赏
  • 举报
回复
http://blog.csdn.net/weihua1984/archive/2011/04/29/6371084.aspx
风声边界 2011-04-28
  • 打赏
  • 举报
回复
我查了removeItemWidget的实现是
setItemWidget(item,1,0);不知道具体delete在哪

是,不delete就没有问题
再看看具体什么时候delete的

还想问qt如何查看内存泄露
zhh_kv 2011-04-28
  • 打赏
  • 举报
回复
1. treeWidget->setItemWidget(item,1,fontBox);
是将fontBox的parent设置为treeWidget;
2.treeWidget->removeItemWidget(item,1);
treeWidget会把fontBox这个child widget delete掉;
3.所以不会出现内存泄露;

如果你再次delete,就会报错

风声边界 2011-04-27
  • 打赏
  • 举报
回复
问题找到了
开始是 QFontComboBox *fontBox = new QFontComboBox();
treeWidget->setItemWidget(item,1,fontBox);

使用完成后
treeWidget->removeItemWidget(item,1);
调用该函数后用不用delete fontBox?
不delete的话,是不是会出现内存泄露


可气的是我delete后,就会报段错误。高手指点

16,223

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧