一个项目要用到树形控件,参考了一个开源项目。https://gitee.com/qt-open-source-collection/NavListView。本人环境为Qt 6.6.2编译后报错如下:
1、编译调试直接报错。

解决方案:
NavModel::TreeNode *node = (NavModel::TreeNode *)index.data(Qt::UserRole).toUInt();
替换成
NavModel::TreeNode *node = (NavModel::TreeNode *)index.data(Qt::UserRole).toULongLong();
2、点击导航菜单信息管理报错。
现象:

解决方案:
在collapse函数中,将refreshList移动到beginxxx和endxxx函数中间,如下所示。
void NavModel::collapse(const QModelIndex &index)
{
TreeNode *node = listNode.at(index.row()).treeNode;
if (node->children.size() == 0) {
return;
}
node->collapse = !node->collapse;
if (!node->collapse) {
beginInsertRows(QModelIndex(), index.row() + 1, index.row() + node->children.size());
refreshList();
endInsertRows();
} else {
beginRemoveRows(QModelIndex(), index.row() + 1, index.row() + node->children.size());
refreshList();
endRemoveRows();
}
}
357

被折叠的 条评论
为什么被折叠?



