الصفحات القابلة للتمرير وعروض القوائم
Kirigami.ScrollablePage
Kirigami.ScrollablePage هي صفحة تحتوي على محتوى قابل للتمرير، مثل ListView. يتم إدارة التمرير ومؤشرات التمرير آليًا.
Kirigami.ScrollablePage {
id: root
//سيكون المستطيل قابلًا للتمرير آليًا
Rectangle {
width: root.width
height: 99999
}
}في كل الجوانب الأخرى تقريبًا، الصفحة القابلة للتمرير مماثلة للصفحة العادية.
تحذير
لا تضع ScrollView داخل Kirigami.ScrollablePage؛ أبناءKirigami.ScrollablePage موجودون بالفعل داخل ScrollView.ListView في ScrollablePage
عندما يمتد الأبناء المباشرون لـ Kirigami.ScrollablePage عموديًا إلى ما يتجاوز حجم الصفحة نفسها، يظهر شريط تمرير على الحافة اليمنى للصفحة وتصبح الصفحة قابلة للتمرير.

صفحتان قابلتان للتمرير، كلتاهما تحتويان على 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
// باقي شيفرة عرض القائمة...
}
}تلميح
يمكنك استخدام KSortFilterProxyModel من KItemModel لإضافة قدرة التصفية بسهولة مباشرة في QML دون أي حاجة لشيفرة C++.اسحب للتحديث
وظيفة أخرى يوفرها هذا المكون هي إجراء "اسحب للتحديث". لاستخدام هذا، فعّله كالتالي:
Kirigami.ScrollablePage {
id: view
supportsRefreshing: true
onRefreshingChanged: {
if (refreshing) {
myModel.refresh();
}
}
ListView {
// ملاحظة: MyModel لا يأتي من المكونات، إنه مجرد مثال على كيفية استخدامه مع بعض منطق التطبيق
// الذي يمكنه تحديث نموذج القائمة والإشارة عند الانتهاء.
model: MyModel {
onRefreshDone: view.refreshing = false;
}
delegate: BasicListItem {}
}
}بالسحب لأسفل، يمكنك أيضًا تفعيل وضع خاص بهامش علوي أكبر مما يسهل استخدام التطبيق بيد واحدة.