QTableView-не позволяет пользователю редактировать ячейку
Я создал QTableView с QSqlTableModel. По стандарту, двойной щелчок по ячейкам будет отмечать их, и пользователь может редактировать их. Я хочу, чтобы пользователь не мог этого делать. Ему разрешено пометить всю строку, щелкнув по одной ячейке, но не редактировать ячейку. Как я могу это сделать?
4 ответов
в зависимости от того, кодируете ли вы все или делаете что-то в конструкторе, установите
-
editTriggers
доQAbstractItemView::NoEditTriggers
-
selectionBehavior
toQAbstractItemView::SelectRows
- дополнительно установить
selectionMode
доQAbstractItemView::SingleSelection
если вы хотите, чтобы пользователь мог выбрать только одну строку
на объекте tableview соответствующие вызовы будут иметь префикс set
Эл.г setEditTriggers()
в конструкторе вы можете найти этот вариант в AbstractItemView
раздел
в идеале, вы хотите использовать:
void QAbstractItemView::setItemDelegate ( QAbstractItemDelegate * delegate )
а затем создайте класс, который наследуется от QItemDelegate
как и в этой пример.
Редактирование класса
QWidget * QItemDelegate::createEditor ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) const
возвращение NULL
или использовать:
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
вы также хотите, чтобы посмотреть
void setSelectionBehavior ( QAbstractItemView::SelectionBehavior behavior )
С параметром: QAbstractItemView::SelectRows
Для справки: http://doc.trolltech.com/4.5/qtableview.html