我使用的是基本的QTableView + QAbstractTableModel架构。 可以通过QAbstractItemDelegate子类编辑数据。一切都按预期工作,但我需要稍微改变编辑行为:
Qt默认行为是:
我想摆脱最后一个。如果委托编辑器失去焦点,则编辑将被取消(即,它不会发出editingFinished()),以便用户只能按Enter键提交更改。
有没有方便的方法呢?
提前致谢
答案 0 :(得分:0)
覆盖类,找出你不想要的最后行为的函数,然后覆盖该函数并将其实现留空,然后像通常那样调用它,但现在它什么都不做(或者别的东西,你正在编程让它做你想做的任何事情)
答案 1 :(得分:-1)
我会覆盖模型中的QAbstractItemModel::setData()
,并在尝试设置与给定项目已存在的数据相同的数据时跳过dataChanged()
。