2016-06-29 11 views
0

Ich habe eine QTableView, und ich muss einige Seite nach oben Seite Funktionalität implementieren.QTableView :: rect() und QTableView :: geometry() gibt keine genauen Ergebnisse

Ich übergebe QModelIndexes im Allgemeinen an das Modell, um herauszufinden, zu was es scrollen soll.

QModelIndex top = indexAt(rect().topLeft()); // always good (row 0) 
QModelIndex btm = indexAt(rect().bottomLeft()); // always bad (last visible row + 4); 

Ich habe einige Zappeln mit rect getan(). Bottom() zur Berücksichtigung der horizontalScrollBar(), wenn sichtbar, aber es ist aus noch von 3 Reihen. Es ist lebenswert, aber nicht ideal. Ich bin sicher, es zu hacken und es eine statische Anzahl von Zeilen zu versetzen würde es brechen, wenn die Schriftgröße anders ist.

Ehrlich gesagt, es würde mir gut gehen, wenn Sie der QScrollBar sagen könnten, einen einzelnen Schritt nach oben oder unten zu scrollen, aber das macht offensichtlich zu viel Sinn.

Antwort

1

Was ist das rect() von? Höchstwahrscheinlich fragen Sie nach einem falschen. Denken Sie daran, dass es sich bei diesen Ansichten um Bildlaufbereiche handelt und dass Sie sich mit dem rect() befassen sollten, der von viewport() stammt.

+0

Sorry, dass ich dort nicht klar war. Das wäre QTableView :: rect(); –

+0

Und, wie Magie, wenn ich ändere, mache ich Viewport() -> Rect() -> bottomLeft() es funktioniert. Prost. –