2016-09-23 1 views
0

Ich habe ein QStandardItemModel und es enthält meine Daten, die rund 5000 Zeilen hat. Ich möchte die Daten in Chargen in QScrollArea einfügen. Wenn ich es ganz einfüge, wird die Performance sehr langsam. Daher möchte ich die Daten hinzufügen, wenn dies vom Ansichtsfenster in QScrollArea gefordert wird. Zuerst habe ich die QScrollArea mit 500 Zeilen geladen. Wenn der Benutzer scrollt, möchte ich weitere Daten zum Ansichtsfenster von QScrollArea hinzufügen.Hinzufügen von Daten zu QScrollArea dynamisch

Hat jemand eine Idee, wie man das macht?

+0

Suchen Sie etwas wie ['fetchMore'] (https://doc.qt.io/qt-5/qtwidgets-itemviews-fetchmore-example.html)? – Mike

+0

Vielleicht sollten Sie den laufenden Code profilieren und sehen, welche Funktionsaufrufe am meisten benötigen und dann entscheiden, wie Sie ihn optimieren. Für mich hat der ähnliche Fall QSortFilterProxyModel :: data Funktion zu viel Zeit zu entschlüsseln einige Daten, so dass ich es zwischengespeichert und der Code begann zu fliegen. – AlexanderVX

+0

@Mike: Yupp "fetchMore" & "canFetchMore". Ich habe mir bereits das Qt-Beispiel angeschaut, aber ich bin mir nicht sicher, wie ich es für QScrollArea implementieren kann – Sandy

Antwort

0

QScrollArea (http://doc.qt.io/qt-4.8/qscrollarea.html) erbt die Funktion

QScrollBar * QAbstractScrollArea::verticalScrollBar() const 

So könnte man die ScrollBar bekommen wie dieses

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

und den Wert auf einen

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

In den AddValues ​​Steckplatz verbinden Sie können die Position der Bildlaufleiste überprüfen und bei Bedarf Werte hinzufügen.

+0

Ich habe es bereits versucht, aber in meinem Fall möchte ich benutzerdefinierte Widgets hinzufügen (2 QLabels & 1 QPushButton). Ich habe versucht, damit herumzuspielen, konnte aber keine Lösung finden. – Sandy

Verwandte Themen