为什么这个例子的delegate里有Qt::UserRole?

Why there is Qt::UserRole in delegate in this example?

我读了一本关于 QT 委托的教程。有一个简单的例子。我们创建 QComboBox 作为具有 3 个值的编辑器:“”、“Pan”、“Pani”。我们在 TitleDelegate class 中重新实现了 3 个方法:createEditorsetEditorDatasetModelData。第一个和第二个我都懂了

QWidget * TitleDelegate :: createEditor (QWidget *parent ,const QStyleOptionViewItem &,const QModelIndex &) const 
{
   QComboBox *widget=new QComboBox (parent);
   QStringList itemList; itemList <<""<<"Pan"<<"Pani";
   widget ->addItems(itemList);
   return widget;
}
void TitleDelegate :: setEditorData (QWidget *editor , const QModelIndex &index) const 
{
   QComboBox *widget=static_cast < QComboBox *>( editor);
   int value=index.model () ->data(index ,Qt::EditRole).toInt ();
   widget -> setCurrentIndex (value);
}
void TitleDelegate :: setModelData (QWidget *editor , QAbstractItemModel *model , const QModelIndex &index) const 
{
   QComboBox *widget = static_cast < QComboBox *>( editor);
   int value = widget -> currentIndex ();
   model ->setData(index , widget -> currentText (), Qt::DisplayRole );
   model ->setData(index , value , Qt::UserRole);
}

但我不明白来自 setModelData 的台词:

model ->setData(index , value , Qt::UserRole);

书中有解释:我们必须保存value才能在setEditorData方法中使用它来了解活动列表的元素。

为什么我们使用Qt::UserRole?我认为我们应该使用 Qt::EditRole.

看看这个 Documentation 关于 Qt::ItemDataRole

但是对于用户角色

如其所说:

For user roles, it is up to the developer to decide which types to use and ensure that components use the correct types when accessing and setting data.