QStandardItemModel. In setModelData it's downcasted to QAbstractItemModel. Only one think interest me - whole method is const. But - if I remeber correctly - const correctness is being tested only during compilation time.
SetData is virtual function - so even when I get QAbstractItemModel pointer to QStandardItemModel - then setData should use method from QStandardItemModel.
During setData processed by QStandardItemModel it calls setData for QStandardItem which uses QVector<QWidgetItemData> values - there should be no time delays.
The only think that bothers me is signal sent after data set - maybe there's a problem.
Bookmarks