#include class MyTreeView : public QTreeView { public: MyTreeView(QWidget *parent = 0) : QTreeView(parent) {} protected: bool edit(const QModelIndex &index, EditTrigger trigger, QEvent *event) { if (trigger == QAbstractItemView::SelectedClicked && index == previousEditIndex) { previousEditIndex = QModelIndex(); return false; } else if (trigger != QAbstractItemView::NoEditTriggers) previousEditIndex = index; else if (trigger == QAbstractItemView::NoEditTriggers && event->type() != QEvent::MouseButtonPress) previousEditIndex = QModelIndex(); return QTreeView::edit(index, trigger, event); } private: QPersistentModelIndex previousEditIndex; };