Skip to main content
تخط المحتوى

الصفحات القابلة للتمرير وعروض القوائم

الصفحات القابلة للتمرير مفيدة عند دمجها مع مكونات عمودية أو مكونات ديناميكية مثل عروض القوائم.

Kirigami.ScrollablePage

Kirigami.ScrollablePage هي صفحة تحتوي على محتوى قابل للتمرير، مثل ListView. يتم إدارة التمرير ومؤشرات التمرير آليًا.

Kirigami.ScrollablePage {
    id: root
    //سيكون المستطيل قابلًا للتمرير آليًا
    Rectangle {
        width: root.width
        height: 99999
    }
}

في كل الجوانب الأخرى تقريبًا، الصفحة القابلة للتمرير مماثلة للصفحة العادية.

ListView في ScrollablePage

عندما يمتد الأبناء المباشرون لـ Kirigami.ScrollablePage عموديًا إلى ما يتجاوز حجم الصفحة نفسها، يظهر شريط تمرير على الحافة اليمنى للصفحة وتصبح الصفحة قابلة للتمرير.

صفحتان قابلتان للتمرير، كلتاهما تحتويان على ListView بمحتويات مخصصة (لقطة شاشة من NeoChat)

صفحتان قابلتان للتمرير، كلتاهما تحتويان على ListView بمحتويات مخصصة (لقطة شاشة من NeoChat)

غالبًا ما يكون لديك أكثر من ابن واحد في Kirigami.ScrollablePage، ويمكن أن يكون وضع العناصر صعبًا—خاصةً مع ListView.

  • بالنسبة للمكونات غير المرئية، وجودها داخل مكون ListView لن يغير مظهر الصفحة، لذا يمكننا نقلها داخل نطاق عرض القائمة. نفس الشيء ينطبق على العناصر المثبتة في مركز الصفحة، مثل رسائل العناصر النائبة لعروض القوائم الفارغة.
  • بالنسبة للعناصر الأخرى، قد يكون من المنطقي نقلها إلى الترويسة أو التذييل لـ Kirigami.ScrollablePage. هذا هو الحال غالبًا لأشرطة البحث.

PlaceholderMessage

من الممكن إضافة Kirigami.PlaceholderMessage مع بعض التعليمات في حال كان عرض القائمة فارغًا.

Kirigami.ScrollablePage {
    ListView {
        id: listView
        Kirigami.PlaceholderMessage {
            anchors.centerIn: parent
            width: parent.width - (Kirigami.Units.largeSpacing * 4)
            visible: listView.count === 0
            text: i18n("No data found")
            helpfulAction: Kirigami.Action {
            text: i18n("Load data")
                // المزيد من الشيفرة...
            }
        }
        model: // شيفرة النموذج...
    }
}

البحث في ListView

غالبًا ما يُضاف حقل بحث إلى Kirigami.ScrollablePage لتصفية ListView. يمكن فعل ذلك بتغيير titleDelegate المبدئي لاستخدام Kirigami.SearchField بدلاً من ذلك.

Kirigami.ScrollablePage {
    titleDelegate: Kirigami.SearchField {
        Layout.topMargin: Kirigami.Units.smallSpacing
        Layout.bottomMargin: Kirigami.Units.smallSpacing
        Layout.fillHeight: true
        Layout.fillWidth: true
        onTextChanged: mySortFilterModel.filterText = text
        KeyNavigation.tab: listView
    }

    ListView {
        id: listView
        // باقي شيفرة عرض القائمة...
    }
}

اسحب للتحديث

وظيفة أخرى يوفرها هذا المكون هي إجراء "اسحب للتحديث". لاستخدام هذا، فعّله كالتالي:

Kirigami.ScrollablePage {
    id: view
    supportsRefreshing: true
    onRefreshingChanged: {
        if (refreshing) {
            myModel.refresh();
        }
    }
    ListView {
        // ملاحظة: MyModel لا يأتي من المكونات، إنه مجرد مثال على كيفية استخدامه مع بعض منطق التطبيق
        // الذي يمكنه تحديث نموذج القائمة والإشارة عند الانتهاء.
        model: MyModel {
            onRefreshDone: view.refreshing = false;
        }
        delegate: BasicListItem {}
    }
}

بالسحب لأسفل، يمكنك أيضًا تفعيل وضع خاص بهامش علوي أكبر مما يسهل استخدام التطبيق بيد واحدة.