2011-10-04 51 views
1

我正在做一個小應用程序,代表待辦事項列表。 該列表存儲在一個cusom模型(從QAbstractItemModel派生)中,並顯示在QTableView中。接受與QDataWidgetMapper編輯的wigets

我也有一個自定義小部件(TaskDialog),用於瀏覽和編輯列表中的任務。 TaskDialog的子項用QDataWidgetMMapper映射到模型。 在任務對話框中,我還有一些按鈕,可以瀏覽待辦事項列表(QDataWidgetMapper :: toPrevious()...)中的所有任務。

問題是,如果我正在編輯TaskDialog中的任務(例如任務名稱),然後瀏覽到另一個任務,則未在模型中設置新的編輯身體。 但是,如果我編輯TaskDialog中的某些內容,則首先將焦點更改爲TaskDialog的其他子部件,然後按下其中一個瀏覽按鈕,然後將更改寫入模型。

如何獲得處於編輯模式的小部件將被接受並寫入模型。

我也試過了諾基亞QDataWidgetMapper的例子。它完美地運作。但他們使用QStandardItemModel。

問候 盧克

回答

2

我找到了一個解決方案: 的提交政策QDataWidgetMapper必須被設置爲QDataWidgetMapper :: ManualSubmit。 然後,當我瀏覽一個新項目(即按下一個瀏覽按鈕)時,我使用QDataWidgetMapper :: submit()提交更改。