Qt c++ mvc view怎么知道哪些item 需要委托去调用,createEditor
时间: 2024-03-12 20:48:31 浏览: 58
MVC模型视图的模型在实际工程的应用.rar
5星 · 资源好评率100%
在Qt C++中,MVC(Model-View-Controller)模式被广泛地使用。其中,View通常是由QTableView、QListView和QTreeView等控件来实现的,而Model则是用QAbstractItemModel的派生类来实现的。
对于需要使用委托的item,View会发送一个QAbstractItemDelegate::createEditor()信号,通知Model需要为该item创建一个编辑器。在Model中,可以通过实现QAbstractItemModel::flags()函数来告诉View哪些item需要使用委托。
例如,如果需要为第一列的item使用委托,可以这样实现flags()函数:
```
Qt::ItemFlags MyModel::flags(const QModelIndex &index) const
{
if (index.column() == 0)
return QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
else
return QAbstractItemModel::flags(index);
}
```
在这个实现中,对于第一列的item,我们返回了QAbstractItemModel::flags(index) | Qt::ItemIsEditable,表示该item是可编辑的,并且需要使用委托。
需要注意的是,使用委托的item在View中会被绘制为一个常规的item,只有在用户进行编辑时,才会调用委托的createEditor()函数来创建编辑器。
阅读全文