2016-09-23 148 views
0

我有一个QStandardItemModel,它包含了我的数据,它有大约5000行。我想批量插入QScrollArea的数据。如果我将它完全插入,表演变得非常慢。因此,我想在QScrollArea中的视口需要时添加数据。起初我已经加载了500行的QScrollArea。当用户滚动时,我希望将更多数据添加到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 * QAbstractScrollArea::verticalScrollBar() const 

所以,你可以得到滚动条这样

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

和值连接到插槽

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

在addvalues插槽,您可以检查滚动条位置并在需要时添加值。

+0

我已经尝试过使用它,但在我的情况下,我想添加自定义小部件(2 QLabels&1 QPushButton)。我试着玩弄它,但找不到解决方案。 – Sandy