QTableView-не позволяет пользователю редактировать ячейку

Я создал QTableView с QSqlTableModel. По стандарту, двойной щелчок по ячейкам будет отмечать их, и пользователь может редактировать их. Я хочу, чтобы пользователь не мог этого делать. Ему разрешено пометить всю строку, щелкнув по одной ячейке, но не редактировать ячейку. Как я могу это сделать?

4 ответов


в зависимости от того, кодируете ли вы все или делаете что-то в конструкторе, установите

  • editTriggers до QAbstractItemView::NoEditTriggers
  • selectionBehavior to QAbstractItemView::SelectRows
  • дополнительно установить selectionMode до QAbstractItemView::SingleSelection если вы хотите, чтобы пользователь мог выбрать только одну строку

на объекте tableview соответствующие вызовы будут иметь префикс set Эл.г setEditTriggers() в конструкторе вы можете найти этот вариант в AbstractItemView раздел


попробуйте это:

table->setEditTriggers(QAbstractItemView::NoEditTriggers);

выключите элемент таблицы


в идеале, вы хотите использовать:

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