C++ QTableView-不允许用户编辑单元格
我用QSqlTableModel创建了一个QTableView。 根据标准,双击单元格将标记它们,用户可以编辑它们。 我希望,用户不允许这样做。他可以通过单击单个单元格来标记整行,但不能编辑单元格。 我该怎么做呢?试试这个:C++ QTableView-不允许用户编辑单元格,c++,qt,qt4,qtableview,C++,Qt,Qt4,Qtableview,我用QSqlTableModel创建了一个QTableView。 根据标准,双击单元格将标记它们,用户可以编辑它们。 我希望,用户不允许这样做。他可以通过单击单个单元格来标记整行,但不能编辑单元格。 我该怎么做呢?试试这个: table->setEditTriggers(QAbstractItemView::NoEditTriggers); 关闭表项的ItemIsEditable位。e、 g: QTableWidgetItem* item = new QTableWidgetItem(.
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
关闭表项的
ItemIsEditable
位。e、 g:
QTableWidgetItem* item = new QTableWidgetItem(...);
...
item->setFlags(item->flags() &= ~Qt::ItemIsEditable);
理想情况下,您希望使用:
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 )
使用参数:qabstractemview::SelectRows
供参考:
根据您是在设计器中编写所有代码还是执行某些操作,设置
toeditTriggers
qabstractemview::NoEditTriggers
toselectionBehavior
QAbstractItemView::SelectRows
- 如果希望用户只选择一行,可以选择将
设置为selectionMode
qabstractemview::SingleSelection
在tableview对象上,适当的调用都将以
set
作为前缀,例如setEditTriggers()
在设计器中,您可以在AbstractItemView
部分找到这些选项,称为QAbstractItemView::NoEditTriggers,QAbstractItemView::SelectRows和QAbstractItemView::SingleSelection,但这正是我想要的。非常感谢。