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