18

たくさんのアイコンがあるアイコンモードのQListViewがあるので、スクロールバーが表示されますが、スクロールがスムーズではなく、スクロールごとにあるポイントから別のポイントに突然ジャンプするため、このIMHOはユーザーを混乱させます。スクロールをスムーズにしたいのですが、ドキュメントに何も見つかりませんでした。出来ますか?

4

3 に答える 3

28

多分QListView.setVerticalScrollMode ( QAbstractItemView::ScrollPerPixel )

于 2010-01-06T21:51:06.987 に答える
12

あなたの質問を正しく理解できたら、ウィジェットのスクロール動作を再定義してください。ユーザーがスクロール矢印(下の画像でbとしてマークされている)を押すたびに、リストビューがアイテムの高さだけスクロールされていると思います。

代替テキスト

リスト ビューに接続された垂直スクロール バーの場合、スクロール矢印は通常、現在の位置を「1 行」上または下に移動し、スライダーの位置を少しだけ調整します。この場合の行はアイコンの高さだと思います。アイテム デリゲート(setItemDelegate) をインストールし、その sizeHint メソッドをオーバーライドすることで、アイテムの高さを調整できます。これは、この問題の解決には役立ちませんが。あなたが試すことができるのは、QListView の子孫を作成し、その updateGeometries メソッドをオーバーライドすることです。そこで、垂直スクロールバーのステップを必要な値に設定できます。このタスクでは1または2だと思います。以下は、カスタム リストビューの例です。

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);
}

これが役に立てば幸いです、よろしく

于 2010-01-10T05:42:18.737 に答える
1

ui->barra_scroll に QlistWidget* があり、これで非常にスムーズに感じます。

QScrollBar *qsb = ui->barra_scroll->verticalScrollBar();
qsb->setSingleStep(5);
于 2020-05-12T16:39:48.737 に答える