WAbstractItemModel lacks takeHeaderItem method
there is no way to move a model column without to lose the header item.
One could takeColumn and insert it to the proper place, but the header item gets lost. An work around could be to make a copy of every headerData role and set it to the inserted column header item. Unfortunately, you could forget to copy all roles used.
A takeHeaderItem(int) method could make things easier.