20200103-01 QML C++模型同步更新界面

1 上移 / 下移
//上移 一个
beginMoveRows(QModelIndex(), row, row, QModelIndex(), row - 1);
mDataList.swapItemAt(row - 1, row);
endMoveRows();

以下官方不推荐隐藏更新手法不推荐操作

emit rowsMoved(QModelIndex(), row, row, QModelIndex(), row, {});

// 下移 一个
beginMoveRows(QModelIndex(), row, row, QModelIndex(), row + 2);
mDataList.swapItemAt(row, row+1);
endMoveRows();

以下官方不推荐隐藏更新手法不推荐操作

emit rowsMoved(QModelIndex(), row+1, row+1, QModelIndex(), row+1, {});

//为何是不是 row+1 而是 row + 2 ,如图所示,需要知道4的这个位置插入才算是上下换位

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gx5Vv6yj-1578032219588)(en-resource://database/21143:0)]


合并版

bool moveRow(const int& sourceRow, const int& desRow) {
    //范围检查
    ···
    //移动
    beginMoveRows(QModelIndex(), sourceRow, sourceRow, QModelIndex(),
        (desRow > sourceRow) ? (desRow + 1) : desRow);
        
    mRecords -> swapItemsAt(sourceRow, desRow);
    endRows();
    return true);
}

2 添加 / 删除
beginInsertRows(QModelIndex() , ps, ps);
mRecords->append(temp);
endInsertRows();

beginRemoveRos(QModelIndex(), ps, ps);
mRecords->removeAt(ps);
endRemoveRows();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值