2012-01-19 37 views
1

我有一個QTableView,它使用我製作的擴展了QAbstractTableModel的模型。該型號使用向QTableView添加行在很多插入操作後會降低應用程序的性能

QList< QVector<QString> * > 

作爲集合。表視圖用於顯示來自應用程序的日誌消息,因此集合最終會變得非常大......在插入幾千行後,我注意到表視圖開始減慢很多,最終視圖凍結了幾秒鐘在刷新之前..它是收集即時通訊的類型使用它使其減慢太多喲?有沒有更好的方法來存儲插入的數據? QTableView是否支持大量的數據?

編輯

發佈Qt的forumn代碼: http://www.qtforum.org/article/37326/qttableview-slows-down-when-a-lot-of-data-is-inserted.html

+0

你的數據方法是怎樣的?另外你如何將數據插入到模型中? –

回答

0

我已經成功地使用QTableView顯示〜10000行,以便QTableView能夠支持它,但你的收藏極不理想。

QList在中間插入非常昂貴,因爲您必須重新分配坐在您嘗試插入的索引下方的所有內容,因爲您只能在指針周圍移動但仍然可以。

通常對於數據存儲,我會使用std::vector< data_struct * >而不是使用字符串向量。 QVariant能夠呈現整數和其他類型,因此您不必事先進行轉換。

我可以想出的最好建議是運行gprof或類似的工具,以確定您花時間在哪些時間,然後解決該特定問題。

+0

我已經將它更改爲使用結構向量,並且在大概10,000行之後仍然會減慢應用程序的速度。 – MBU

+0

你有gprof'的應用程序嗎?你正在做一個完整的'reset()'或者對每個插入進行更新嗎? – Karlson

+0

虐待我的代碼。 – MBU

相關問題