2013-04-02 76 views
0

我想知道在QlistView中顯示矢量內容的最佳方式是什麼。我對QT相當陌生,因此是一個問題。矢量內容變化非常快,因此速度至關重要。我知道你可以通過設置模型在QListView中顯示矢量

QStringList list; 
list << "item1" << "item2" << "item3" << "item4" << "item5"; 
ui.listView->setModel(new QStringListModel(list)); 

設置在QT模型,如我怎麼會做這樣的事情與載體或deque的類型。

+0

「非常快」有多快? – 2013-04-02 17:54:33

+0

對矢量進行的多次更改 – MistyD

回答

1

您需要繼承QAbstractListModel的子類。這可以讓你使用任何你想要的數據結構。爲此,您需要實現幾個純虛函數,rowCount()data()。 Qt的模型/視圖編程框架很不錯,但需要一些習慣,讀一下它們的guide可能是一個好主意。

4

正如Matt Philips所提到的,它可以通過繼承QAbstractListModel來完成。 然而,簡單的方法是轉換QVector /的std ::載體的QList使用內置的QList靜態成員:

ui.listView->setModel(new QStringListModel(QList<QString>::fromVector(yourQVector))); 

ui.listView->setModel(new QStringListModel(QList<QString>::fromStdVector(yourStdVector))); 

我懷疑會有很大的開銷,由於該轉換,如果你可以通過子分類QAbstractListModel顯着優化...

+0

因此,您是否告訴我每次按下添加按鈕時都會「更改」模型? – volperossa