Есть ли любой способ определить если a QTableView
имеет открытый редактор в текущей ячейке? Я должен обработать следующую ситуацию:
Я вижу, как получить текущий объект и могу получить делегата на том объекте, но я не вижу никого isEditMode()
свойство я надеялся найти.
Кто-то может указать на меня в правильном направлении?
Создайте подкласс своего делегата, чтобы он включал аксессор, который сообщает вам, когда он редактирует:
void MyDelegate::setEditorData ( QWidget * editor, const QModelIndex & index ) const {
// _isEditing will have to be mutable because this method is const
_isEditing = true;
QStyledItemDelegate::setEditorData(editor, index);
}
void MyDelegate::setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const {
QStyledItemDelegate::setModelData(editor, model, index);
_isEditing = false;
}
bool MyDelegate::isEditing() const { return _isEditing; }
Затем вы можете просто проверить делегата, чтобы увидеть, что происходит. В качестве альтернативы и / или если вам не нравится изменяемый
, вы можете подавать сигналы, чтобы знать, в каком состоянии находится делегат.