2016-09-23 8 views
0

私はQStandardItemModelを持っていて、それには約5000行のデータが含まれています。私はバッチでQScrollAreaにデータを挿入したいと思います。私がそれを完全に挿入すると、パフォーマンスは本当に遅くなります。したがって、QScrollAreaのビューポートで必要なときにデータを追加したいと思います。最初はQScrollAreaに500行をロードしました。ユーザーがスクロールすると、QScrollAreaのビューポートに追加データを追加します。QScrollAreaにデータを動的に追加します。

誰もこのことについてどのように考えているのですか?

+0

['fetchMore'](https://doc.qt.io/qt-5/qtwidgets-itemviews-fetchmore-example.html)のようなものをお探しですか? – Mike

+0

コードの実行をプロファイリングして、どの関数呼び出しが最も多く使用されているかを確認し、最適化する方法を決定する必要があります。私にとっては、同様のケースQSortFilterProxyModel :: data関数は、データを復号化するのに多くの時間を要し、キャッシュして、コードが飛びぬき始めました。 – AlexanderVX

+0

@Mike:Yupp "fetchMore"& "canFetchMore"。私はすでにQtの例を見てきましたが、QScrollAreaの実装方法はわかりません – Sandy

答えて

0

QScrollArea(http://doc.qt.io/qt-4.8/qscrollarea.htmlは)ですから、この

QScrollBar* scroll = ui->scrollarea->verticalScrollBar(); 

のようにスクロールバーを取得し、addvaluesでスロット

QObject::connect(scroll , SIGNAL(valueChanged(int)) ,this , SLOT(addvalues(int))); 

に値を接続できる機能に

QScrollBar * QAbstractScrollArea::verticalScrollBar() const 

を継承しますスクロールバーの位置を確認し、必要に応じて値を追加することができます。

+0

私は既にそれを使用しようとしましたが、私の場合、カスタムウィジェット(2つのQLabelsと1つのQPushButton)を追加したいと思います。私はそれで遊んでみましたが、解決策を見つけることができませんでした。 – Sandy

関連する問題