当委托失去焦点时,在QTableView中取消编辑

时间:2013-11-13 09:33:45

标签: c++ qt

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

Qt默认行为是:

  • 对于开放代表编辑器,按Enter确认编辑
  • 对于开放代理编辑器,点击Escape取消编辑
  • 对于开放代理编辑器,单击其他表格视图单元格确认编辑

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

有没有方便的方法呢?

提前致谢

2 个答案:

答案 0 :(得分:0)

覆盖类,找出你不想要的最后行为的函数,然后覆盖该函数并将其实现留空,然后像通常那样调用它,但现在它什么都不做(或者别的东西,你正在编程让它做你想做的任何事情)

答案 1 :(得分:-1)

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