[英]QListView & QStandardItemModel check text before editing row
我想在用户编辑之前检查QListView
的文本。 如果它不适合图案,我不想接受它。
目前我有一个QListView
和QStandardItemModel
。 我可以通过QStandardItemModel
轻松添加和删除项目。 我还设置了列表视图的模型。
列表或模型上是否有一些delegates
或event
功能可供编辑?
您可以从QStandardItemModel
重载data()
和setData()
函数,然后当用户尝试编辑项时,您将使用Qt::EditRole
调用setData
,您可以在那里进行处理。
http://qt-project.org/doc/qt-5.0/qtcore/qabstractitemmodel.html#setData
如果我理解正确,您想在用户尝试进入编辑模式时检查项目的值吗?
使用委托应该相当好:
class MyItemDelegate : public QItemDelegate {
public:
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const {
if(index.data() == /* do whatever check you want here */) {
return NULL; // Prevent editing
}
return QItemDelegate::createEditor(parent, option, index);
}
};
listView->setItemDelegate(new MyItemDelegate());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.