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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top