QT4: E 'possibile fare un rotolo QListView senza intoppi?
Domanda
Ho un QListView in modalità Icona con un sacco di icone, in modo da visualizzare una barra di scorrimento, ma lo scrolling non è liscia e questo secondo me confonde l'utente dal momento che salta bruscamente da un punto all'altro ad ogni rotolo. Mi piacerebbe fare il regolare scorrimento, ma non ho trovato nulla nella documentazione. E 'possibile?
Soluzione
Se ho capito bene la tua domanda si desidera ridefinire il comportamento di scorrimento del widget. Credo che quello che succede è che ListView è sempre fatto scorrere per l'altezza della voce ogni volta che gli utenti colpisce una freccia di scorrimento (contrassegnato come B sull'immagine qui sotto).
alt text http://qt.nokia.com/doc/ 4.6 / images / qscrollbar-picture.png
Per una barra di scorrimento verticale collegata ad un elenco, frecce di scorrimento tipicamente spostano quella "linea" attuale posizione su o giù, e regolare la posizione del cursore di una piccola quantità. Credo che la linea in questo caso è l'altezza di un'icona. È possibile regolare l'altezza articoli installando e voce delegato (setItemDelegate) e prioritario il suo metodo sizehint. Anche se questo non aiuterebbe a risolvere questo problema. Che cosa si potrebbe provare è quello di creare un discendente QListView e ignorare il suo metodo updateGeometries. Ci si può impostare la fase di scorrimento verticale per il valore che si vuole, credo che 1 o 2 per questo compito. Di seguito è riportato un esempio della listview personalizzato:
class TestListView : public QListView
{
Q_OBJECT
public:
explicit TestListView(QWidget *parent = 0);
protected:
virtual void updateGeometries();
};
TestListView::TestListView(QWidget *parent) :
QListView(parent)
{
//???
}
void TestListView::updateGeometries()
{
QListView::updateGeometries();
verticalScrollBar()->setSingleStep(2);
}
Spero che questo aiuti, saluti
Altri suggerimenti