我用QSqlTableModel创建了一个QTableView。 按标准,双击单元格将标记它们,用户可以编辑它们。 我想,不允许用户这样做。允许他通过单击单个单元格来标记整行,但不能编辑单元格。 我怎么能这样做?
答案 0 :(得分:18)
根据您是否在设计师中编写所有内容或进行操作,请设置
editTriggers
至QAbstractItemView::NoEditTriggers
selectionBehavior
至QAbstractItemView::SelectRows
selectionMode
设置为QAbstractItemView::SingleSelection
在tableview对象上,相应的调用都将以set
为前缀,例如setEditTriggers()
,您可以在AbstractItemView
部分找到这些选项
答案 1 :(得分:10)
试试这个:
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
答案 2 :(得分:2)
关闭表项的ItemIsEditable
位。 e.g:
QTableWidgetItem* item = new QTableWidgetItem(...);
...
item->setFlags(item->flags() &= ~Qt::ItemIsEditable);
答案 3 :(得分:1)
理想情况下,您会想要使用:
void QAbstractItemView::setItemDelegate ( QAbstractItemDelegate * delegate )
然后在this示例中创建一个继承自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