سؤال

لدي QlistView في وضع الأيقونات مع الكثير من الرموز، بحيث يظهر شريط التمرير، ولكن التمرير غير ناعم وهذا IMHO يربك المستخدم لأنه يقفز فجأة من نقطة إلى أخرى في كل تمرير. أود أن أجعل التمرير سلسا لكنني لم أجد أي شيء في المستندات. هل هو ممكن؟

هل كانت مفيدة؟

المحلول

إذا فهمت سؤالك بشكل صحيح، فهل ترغب في إعادة تعريف سلوك التمرير في القطعة. أعتقد أن ما يحدث هو أن ListView يتم التمرير بواسطة ارتفاع العنصر عندما يضرب المستخدمون سهم التمرير (تم وضع علامة عليه ب B الصورة أدناه).

نص Alt http://qt.nokia.com/doc/4.6/images/qscrollbar-picture.png.

للحصول على شريط تمرير عمودي متصل بعرض قائمة، عادة ما تحرك أسهم التمرير الموضع الحالي "سطر" واحد أو لأسفل، وضبط موضع شريط التمرير بمقدار صغير. أعتقد أن الخط في هذه الحالة هو ارتفاع أيقونة. يمكنك ضبط ارتفاع العناصر عن طريق التثبيت و مفوض البند (setitemdelegate) وتجاوز طريقة SizeHint لها. على الرغم من أن هذا لن يساعدك في حل هذه المشكلة. ما يمكن أن تحاوله هو إنشاء سليل qlistView وتجاوز طريقة updegeomowries لها. هناك يمكنك إعداد خطوة SCROLLBAR الرأسية إلى القيمة التي تريدها، وأعتقد 1 أو 2 لهذه المهمة. فيما يلي مثال على ListView المخصص:

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

آمل أن يساعد هذا فيما يتعلق

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top