QTreeView&;qabstractemodel&;insertRow详细信息理解
我已经根据editabletreemodel示例以及此处的建议实现了我的QTreeView和QAbstractItemModel: 行得通。 但有一点我不明白 为了使我的应用程序在插入子行时正常工作,我必须发出layoutChanged()我必须这样做。如果我不发射-插入子项效果不好:新的子项正确显示在模型中,它被正确保存(保存时),但它不会显示在视图中 editabletreemodel示例不包含“emit layoutChanged()”,它可以很好地插入子项 以下是我的QabstracteModel同级类的insertRows方法:QTreeView&;qabstractemodel&;insertRow详细信息理解,qt,insertion,qtreeview,qabstractitemmodel,Qt,Insertion,Qtreeview,Qabstractitemmodel,我已经根据editabletreemodel示例以及此处的建议实现了我的QTreeView和QAbstractItemModel: 行得通。 但有一点我不明白 为了使我的应用程序在插入子行时正常工作,我必须发出layoutChanged()我必须这样做。如果我不发射-插入子项效果不好:新的子项正确显示在模型中,它被正确保存(保存时),但它不会显示在视图中 editabletreemodel示例不包含“emit layoutChanged()”,它可以很好地插入子项 以下是我的Qabstracte
bool ExTree::insertRows(int位置、int行、常量QModelIndex&parent)
{
ExObject*parentItem=getItem(父项);
成功;
开始插入行(父、位置、位置+行-1);
success=parentItem->insertChildren(位置、行、根项目->列计数());
endInsertRows();
如果(成功)发出layoutChanged();
回归成功;
}
这与editabletreeview示例中的几乎相同,唯一的区别是发射
为什么
我想了解,为什么我需要发出layoutChanged(),而editabletreeview不这样做。如果有人能解释这一点,我将不胜感激
我不需要理解为什么发射。我需要理解为什么我需要发出而editabletreeview不需要它。您是否将自定义委托与重新实现的sizeHint一起使用?删除beginInsertRows和endInsertRows时会发生什么?[Dmitry Sazonov]您是否将自定义委托与重新实现的sizeHint一起使用?“我真的不知道您关于委托的意思。我试着尽可能接近这个例子。我的代码中没有sizeHint函数。未实现,未调用。