当委托失去焦点时取消 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 中的编辑的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中取消焦点文本字段?

jQuery失去焦点触发事件,现在会出现alert循环出现的状况

前端 注册页面 当输入框失去鼠标点击焦点时,边框红框显示

将自定义委托与从 QTableView 派生的类一起使用

C# WinForm 文本框离开焦点事件 问题???

当控件即将失去焦点时,是不是存在从 C++ 程序触发的事件?