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
Auromatisches Scrollen in QTable
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.
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.
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.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.
>>[-]>[-]>[-]>[-]<<<<<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]
Funktioniert
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
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
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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
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
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung