我用 QSqlTableModel 创建了一个 QTableView。按照标准,双击单元格将标记它们并且用户可以编辑它们。我想要,不允许用户这样做。他可以通过单击单个单元格来标记整行,但不能编辑该单元格。我怎样才能做到这一点?
问问题
25012 次
4 回答
21
根据您是在设计器中编写所有代码还是在做事,设置
editTriggers
到QAbstractItemView::NoEditTriggers
selectionBehavior
到QAbstractItemView::SelectRows
- 如果您希望用户仅选择一行,则可以选择设置
selectionMode
为QAbstractItemView::SingleSelection
在 tableview 对象上,适当的调用都将带有前缀,set
例如setEditTriggers()
在设计器中,您可以在AbstractItemView
部分中找到这些选项
于 2009-08-25T14:28:23.030 回答
11
试试这个:
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
于 2009-08-25T14:13:31.760 回答
4
切换表项的ItemIsEditable
位。例如:
QTableWidgetItem* item = new QTableWidgetItem(...);
...
item->setFlags(item->flags() &= ~Qt::ItemIsEditable);
于 2009-08-25T14:14:15.193 回答
1
理想情况下,您将要使用:
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
于 2009-08-25T14:17:08.557 回答