我使用了 QSqlTableModel 创建了一个 QTableView。 默认情况下,双击单元格会选中单元格,用户可以编辑它们。 我希望用户不能这样做。他只能通过单击单个单元格来选中整行,但不能编辑单元格。 我该怎么做?
我使用了 QSqlTableModel 创建了一个 QTableView。 默认情况下,双击单元格会选中单元格,用户可以编辑它们。 我希望用户不能这样做。他只能通过单击单个单元格来选中整行,但不能编辑单元格。 我该怎么做?
根据您是在编写代码还是在设计器中进行操作,设置以下内容:
editTriggers
为 QAbstractItemView::NoEditTriggers
selectionBehavior
为 QAbstractItemView::SelectRows
selectionMode
为 QAbstractItemView::SingleSelection
在tableview对象上,所有适当的调用都将以set
为前缀,例如在设计器中,您可以在AbstractItemView
部分找到这些选项。
尝试这个:
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
关闭表格项的ItemIsEditable
位。例如:
QTableWidgetItem* item = new QTableWidgetItem(...);
...
item->setFlags(item->flags() &= ~Qt::ItemIsEditable);
理想情况下,您会想要使用:
void QAbstractItemView::setItemDelegate ( QAbstractItemDelegate * delegate )
然后创建一个继承自QItemDelegate
的类,就像this示例中一样。
编辑您的类以具有
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