当委托失去焦点时取消 QTableView 中的编辑
Posted
技术标签:
【中文标题】当委托失去焦点时取消 QTableView 中的编辑【英文标题】:Cancel edit in QTableView when delegate loses focus 【发布时间】:2013-11-13 09:33:45 【问题描述】:我正在使用基本的 QTableView + QAbstractTableModel 架构。 可以通过 QAbstractItemDelegate 子类编辑数据。一切都按预期工作,但我需要稍微改变编辑行为:
Qt 默认行为是:
对于打开的委托编辑器,按 Enter 确认编辑 对于打开的委托编辑器,点击 Escape 会取消编辑 对于打开的委托编辑器,单击不同的表格视图单元格可确认编辑我想摆脱最后一个。如果代理编辑器失去焦点,编辑将被取消(即它不应发出editingFinished()),以便用户只能通过按Enter 提交更改。
有没有方便的方法来做到这一点?
提前致谢
【问题讨论】:
【参考方案1】:重写该类,找出最后一个行为是您不想要的函数,然后重写该函数并将其实现留空,然后像往常一样调用它,但现在它什么也不做(或不做别的东西,你正在编程让它做你想做的任何事情)
【讨论】:
【参考方案2】:我会覆盖您模型中的 QAbstractItemModel::setData()
并跳过发射 dataChanged()
以尝试设置与给定项目已经存在的相同数据。
【讨论】:
以上是关于当委托失去焦点时取消 QTableView 中的编辑的主要内容,如果未能解决你的问题,请参考以下文章