Auromatisches Scrollen in QTable

Alles rund um die Programmierung mit Qt
Antworten
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

Auromatisches Scrollen in QTable

Beitrag 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
pm_Snake
Beiträge: 86
Registriert: 7. September 2004 11:33

Beitrag 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.
>>[-]>[-]>[-]>[-]<<<<<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

Funktioniert

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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 :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

Danke

Beitrag 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
Antworten