2010-04-07 54 views
0

我有一個QTreeView,數據隨時間變化,每秒在QAbstractItemModel中發出一個dataChanged信號。 QTreeView中的項目也可以編輯,但是當編輯器爲某個項目打開時,編輯器字符串會在編輯時更新,這非常煩人。任何阻止編輯器更新爲新值的方法?停止更新單個QModelIndex

回答

1

你對QTreeView使用自己的模型嗎?在這種情況下,您會覆蓋它並且不會爲Qt :: EditRole返回任何數據。如果你不方便(你想在開始編輯時在現場獲得當前數據),那麼你可以創建自己的QItemDelegate/QStyledItemDelegate並在那裏實現一些自定義邏輯:使它成爲不更新的部件具有新的價值,例如,當它有重點時。

雖然我可能會錯過一些東西,但有一種更簡單的方法可以做到這一點。

+0

如何在代理人關注的情況下阻止更新?簡單地重寫update()會阻止在輸入值時顯示我的輸入,不是嗎? – fawick 2010-04-12 17:00:08

+0

我不是100%的信心,這種方法是去工作,但嘗試重寫 虛擬無效\t Q [樂府] ItemDelegate :: setEditorData(QWidget的*主編,常量QModelIndex和指數)常量 和身體做沒有,如果editor-> hasFocus()是真的。否則,請調用基本實現。 – 2010-04-12 18:56:00

+0

作品像一個魅力,感謝1.0e6 – fawick 2010-04-13 17:27:32