【问题标题】:Cancel edit in QTableView when delegate loses focus当委托失去焦点时取消 QTableView 中的编辑
【发布时间】:2013-11-13 09:33:45
【问题描述】:

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

Qt 默认行为是:

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

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

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

提前致谢

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-02-04
        • 2015-05-30
        • 1970-01-01
        • 2013-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多