2012-03-05 14 views
1

我有一個窗口,其中包含QAbstractTableModel的子類(通過QSortFilterProxyModel)上的QTreeView(databaseTreeView)。 我有一個[Add]按鈕,其中調用ui->databaseTreeView->model()->insertRow(ui->databaseTreeView->model()->rowCount());。 我還有一個[編輯]按鈕,它使用ui->databaseTreeView->selectionModel()->currentIndex();將索引傳遞給編輯器窗口。如何將項目添加到Qt4中的模型並獲取新項目的索引

我想有[添加]按鈕,自動打開與新建項目的索引的編輯器,但作爲模型進行排序,在那裏我插入的行,我不能使用的行號。加insertRows()只返回一個布爾值(索引會更方便我的情況,所以我想知道是否有人可以告訴我如何獲得新增項目的索引)。

我願意兩三個小時奉獻給它,重構如果沒有選擇,但我會認爲它應該是相當簡單的。我好奇地看着QAbstractItemModel::rowsInserted信號,但這只是返回我給出的行insertRows(),並編輯列表中的最後一項,而不管它是否是剛添加的項目。

完整的源代碼可以在https://github.com/megamasha/FlashKard找到任何人細看。

回答

0

嗯,看來我設法回答我自己的問題 - 我將自己的信號添加到模型類,並從addRows()函數發送它。然後我將它連接到適當窗口中的一個插槽,以便它可以創建一個編輯器作爲它的孩子。

我仍然有興趣聽到,感覺不像一個kludgey方法建議 - 我覺得我應該能夠使用已有的插槽來達到同樣的目的。

我將看看是否mapToSource()可以使用...

0

http://doc.qt.nokia.com/4.7/qsortfilterproxymodel.html#details的QSortFilterProxyModel充當原始模型的包裝。 「如果你需要源QModelIndexes轉換爲排序/過濾模型指標,反之亦然,使用mapToSource(),mapFromSource(),mapSelectionToSource(),和mapSelectionFromSource()。

+0

謝謝你的報價,但它不是從一個指標轉換爲另一種的問題 - 它沒有在第一時間索引的問題。 無論如何,我找到了一個解決方案。我實現了自己的信號,從'addRows()'函數發送並連接到一個插槽,該插槽打開該卡進行編輯。 – 2012-03-06 14:58:20

相關問題