So simply exchange data from both items and emit dataChanged for both of them. Just be aware this is not exchanging rows but exchanging their values. If you have a persistant index pointing to both of them, they will not be exchanged and will be pointing to wrong indexes after the swap. With "my" approach you at least save one of them.