2
默认情况下,编辑器在输入按键,按Tab键或焦点更改时提交数据。我需要放弃焦点更改或Tab按下的编辑,而不是将它们提交给模型。我怎么做?我已经有自己的代表班了,我可以帮忙吗?QTreeView项目编辑器:如何使其仅在Enter按钮上提交编辑?
默认情况下,编辑器在输入按键,按Tab键或焦点更改时提交数据。我需要放弃焦点更改或Tab按下的编辑,而不是将它们提交给模型。我怎么做?我已经有自己的代表班了,我可以帮忙吗?QTreeView项目编辑器:如何使其仅在Enter按钮上提交编辑?
你应该看看是怎么回事的基类:
$ QT482DIR/src目录/ GUI/itemviews/qitemdelegate.cpp
bool QItemDelegate::eventFilter(QObject *object, QEvent *event)
和过载这种方法来改变默认的行为。只是看看它,我会按照commitData()
和closeEditor()
调用。以及_q_commitDataAndCloseEditor
看看发生了什么
我已经研究过它,在我看来,所有有趣的东西发生在私人类,我不能通过覆盖公共接口来改变。 – 2014-09-28 19:44:07
@VioletGiraffe你可以通过事件过滤器ovverride很多事情 – 2014-09-29 06:50:07
@DmitrySazonov:你是对的。我无法重现默认过滤器的全部功能,因为它使用私人东西,但我仍然可以解决我的问题。 – 2014-10-08 19:27:23