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