Seite 1 von 1
Auromatisches Scrollen in QTable
Verfasst: 24. November 2004 09:39
von sdaub
Hallo,
ich habe eine Tabelle, in die Daten aus einer Datenbank eingelesen werden. Über diese Tabelle gibt es eine Suchfunktion. Das Suchergebnis wird dann markiert. Wie kann ich es aber machen, dass ich auch die markierte Zeile sehe, d.h. wenn ich 100 Zeilen habe, und immer 20 gleichzeitig sehe, dann markiert er mir zwar z.B. Zeile 45, aber ich muss erst scrollen.
Wie kann ich automatisch zu dieser Zeile scrollen?
Danke für die Hilfe
sdaub
Verfasst: 24. November 2004 10:23
von pm_Snake
QTable ist abgeleitete von QFrame. Dort hab ich folgende Methode gefunden. Hab es jetzt nicht ausprobiert, könnte aber sein das ich dich so in die richtige Richtung schubse.
QFrame hat die Methode center( int x, int y )
Ich glaube x und y stehen dann für Zeilen / Spalten und die angegebene Zeile wird angezeigt, heisst also er scrolled automatisch runter oder rauf zur angegebenen Zeile. Er scrolled so das die Zeile mittig im momentan zu sehenden Table steht, laut Doku.
Teste es aus, weil was anderes finde ich auf die schnelle auch nicht.
QT-Doku hat geschrieben:
void QScrollView::center ( int x, int y ) [slot]
Scrolls the content so that the point (x, y) is in the center of visible area.
Example: scrollview/scrollview.cpp.
edit: Da fällt mir auf: Mach dir ein eigenes Signal das am ende der suche abgegeben wird mit Zeile und Spalte wo das Item gefunden wurde. Dann brauchst nur das Signal mit dem Slot zu connecten und eigentlich brauchst dann nichts mehr machen.
Funktioniert
Verfasst: 24. November 2004 12:58
von sdaub
Hallo,
das funktioniert. Ich multipliziere einfach die gefundene Spalte mit der Höhe der Spalte und gebe das dann für y in center(x, y) ein.
Danke
Steffen
Verfasst: 24. November 2004 17:14
von Christian81
Es sollte noch einfacher über QTable::setCurrentCell (x,y) gehen.
Für solche Recherchen empfehle ich immer ein Blick in die Online-Doku:
http://doc.trolltech.com/3.3/qtable.html verrät dir das dann recht schnell

Danke
Verfasst: 25. November 2004 09:15
von sdaub
setCurrentCell ist natürlich die beste Methode!
Ich schau natürlich auch in der Doku, aber manchmal sehen 4 Augen eben mehr als 2, also nochmals Danke.
Steffen