2012-01-19 10 views
1

QAbstractTableModelを拡張したモデルを使ってQTableViewがあります。モデルは、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