0

我正在使用基本的 QTableView + QAbstractTableModel 架构。可以通过 QAbstractItemDelegate 子类编辑数据。一切都按预期工作,但我需要稍微改变编辑行为:

Qt 默认行为是:

  • 对于打开的委托编辑器,按 Enter 确认编辑
  • 对于打开的委托编辑器,点击 Escape 会取消编辑
  • 对于打开的委托编辑器,单击不同的表格视图单元格确认编辑

我想摆脱最后一个。如果委托编辑器失去焦点,则应取消编辑(即不应发出editingFinished()),以便用户只能通过按Enter 提交更改。

有没有方便的方法来做到这一点?

提前致谢

4

2 回答 2

0

重写该类,找出最后一个行为是您不想要的函数,然后重写该函数并将其实现留空,然后像往常一样调用它,但现在它什么都不做(或做其他事情,你正在编程让它做任何你想做的事)

于 2013-11-13T09:40:53.940 回答
-1

我将覆盖您的模型中的 ,并在尝试设置与给定项目已经存在的数据相同的数据时QAbstractItemModel::setData()跳过发射。dataChanged()

于 2013-11-13T10:48:58.217 回答