繁体   English   中英

QListView和QStandardItemModel在编辑行之前检查文本

[英]QListView & QStandardItemModel check text before editing row

我想在用户编辑之前检查QListView的文本。 如果它不适合图案,我不想接受它。

目前我有一个QListViewQStandardItemModel 我可以通过QStandardItemModel轻松添加和删除项目。 我还设置了列表视图的模型。

列表或模型上是否有一些delegatesevent功能可供编辑?

您可以从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM