QListView & amp; QStandardItemModel проверяет текст перед редактированием строки

Я хочу проверить текст строки в QListView до того, как пользователь его редактирует. Если это не соответствует шаблону, я не хочу принимать это.

В настоящее время у меня есть QListView а также QStandardItemModel, Я могу легко добавлять и удалять элементы через QStandardItemModel, Я также установил модель представления списка.

Есть ли некоторые delegates или же event функция (и) в списке или модель для редактирования?

1

Решение

вы можете перегрузить data() а также setData() функции от QStandardItemModelЗатем, когда пользователь пытается изменить элемент вашего setData будет вызван с Qt::EditRole и там вы можете сделать свою обработку.

http://qt-project.org/doc/qt-5.0/qtcore/qabstractitemmodel.html#setData

3

Другие решения

Если я вас правильно понимаю, вы хотите проверить значение элемента в то время, когда пользователь пытается войти в режим редактирования?

Использование делегата должно работать для этого довольно хорошо:

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());
0

По вопросам рекламы [email protected]