أنواع الحوارات
Kirigami.Dialog هو مكون بسيط يمكنك استخدامه لتكملة المحتوى المعروض على صفحة التطبيق. يمكنه عرض محتوى غير تفاعلي (نص فقط) ومحتوى تفاعلي (نماذج، قوائم عرض وأزرار).
يمكن إغلاقها بالنقر أو الضغط خارج مساحتها أو بالنقر على زر الإغلاق في الرأس.
بيئات معزولة
يعمل هذا فورًا لجميع حوارات كيريجامي في البيئات المعزولة (مثل فلاتباك) عبر بوابات سطح المكتب XDG. عند التشغيل في بيئة معزولة، يُستخدم النهاية الخلفية للبوابة المناسبة آليًا، مما يسمح بالوصول المصرح به من المستخدم دون الحاجة إلى معالجة يدوية لـ D-Bus.حوار
يُستخدم Kirigami.Dialog القياسي لإنشاء حوارات مخصصة. من السهل جدًا توسيعها:
import QtQuick
import QtQuick.Controls as Controls
import org.kde.kirigami as Kirigami
Kirigami.ApplicationWindow {
title: "Dialog"
width: 400
height: 400
pageStack.initialPage: Kirigami.Page {
id: page
actions: Kirigami.Action {
icon.name: "list-add"
text: "Show dialog"
onTriggered: dialog.open()
}
Kirigami.Dialog {
id: dialog
title: "A simple dialog"
padding: Kirigami.Units.largeSpacing
showCloseButton: false
standardButtons: Kirigami.Dialog.NoButton
flatFooterButtons: false
Controls.Label {
text: "A generic, easy to make dialog!"
}
customFooterActions: Kirigami.Action {
text: "Copy"
icon.name: "clipboard"
}
}
}
}
كما هو موضح في الدليل التمهيدي حول الحوارات، من الممكن أيضًا التقاط standardButton(button) لتعيين سلوك له، مثل ربط لتمكينه فقط تحت شروط معينة.
هذا النوع من الحوارات عام وينطبق على معظم حالات الاستخدام، ويعمل جيدًا مع المحتوى التفاعلي المعقد (خاصة العروض):
import QtQuick
import QtQuick.Controls as Controls
import org.kde.kirigami as Kirigami
Kirigami.ApplicationWindow {
title: "Scrollable Dialog"
width: 600
height: 600
pageStack.initialPage: Kirigami.Page {
id: page
actions: Kirigami.Action {
icon.name: "list-add"
text: scrollableDialog.title
onTriggered: scrollableDialog.open()
}
Kirigami.Dialog {
id: scrollableDialog
title: i18n("Select Number")
ListView {
id: listView
// تلميحات لأبعاد الحوار
implicitWidth: Kirigami.Units.gridUnit * 16
implicitHeight: Kirigami.Units.gridUnit * 16
model: 20
delegate: Controls.RadioDelegate {
topPadding: Kirigami.Units.smallSpacing * 2
bottomPadding: Kirigami.Units.smallSpacing * 2
implicitWidth: listView.width
text: modelData
}
}
}
}
}
في معظم الحالات، مع ذلك، سترغب غالبًا في استخدام أحد أنواع الحوارات المشتقة منه، Kirigami.PromptDialog أو Kirigami.MenuDialog.
حوار المطالبة
Kirigami.PromptDialog هو حوار مزود بوسم مدمج وحشوة مبدئية للمحتوى contentPadding يُستخدم لاستدعاء المستخدم لإدخال بعض المعلومات. يُفترض استخدام هذا النوع من الحوارات فقط للطلبات البسيطة بنعم/لا أو الطلبات المختصرة لإدخال المستخدم.
خاصيته الرئيسية هي Kirigami.Dialog.subtitle، التي تُضاف إليها النصوص. إذا أُضيف أي مكون QML كطفل لحوار الطلب، فسيحل ذلك المكون محل العنوان الفرعي بدلاً من ذلك.
import QtQuick
import QtQuick.Controls as Controls
import org.kde.kirigami as Kirigami
Kirigami.ApplicationWindow {
title: "PromptDialog"
width: 400
height: 400
pageStack.initialPage: Kirigami.Page {
id: page
actions: Kirigami.Action {
icon.name: "list-add"
text: promptDialog.title
onTriggered: promptDialog.open()
}
Kirigami.PromptDialog {
id: promptDialog
title: i18n("Delete file")
subtitle: i18n("Are you sure you'd like to delete this file?")
standardButtons: Kirigami.Dialog.Ok | Kirigami.Dialog.Cancel
onAccepted: console.info("File deleted")
}
}
}
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls as Controls
import org.kde.kirigami as Kirigami
Kirigami.ApplicationWindow {
title: "PromptDialog with a textfield"
width: 600
height: 600
pageStack.initialPage: Kirigami.Page {
id: page
actions: Kirigami.Action {
icon.name: "list-add"
text: textPromptDialog.title
onTriggered: textPromptDialog.open()
}
Kirigami.PromptDialog {
id: textPromptDialog
title: "New Folder"
standardButtons: Kirigami.Dialog.NoButton
customFooterActions: [
Kirigami.Action {
text: "Create Folder"
icon.name: "dialog-ok"
onTriggered: {
showPassiveNotification("Created");
textPromptDialog.close();
}
},
Kirigami.Action {
text: "Cancel"
icon.name: "dialog-cancel"
onTriggered: {
textPromptDialog.close();
}
}
]
ColumnLayout {
Controls.TextField {
Layout.fillWidth: true
placeholderText: "Folder name…"
}
}
}
}
}
حوار القائمة
Kirigami.MenuDialog هو حوار متخصص يُستخدم لعرض مجموعة من الخيارات القابلة للنقر للمستخدم باستخدام خاصية actions.
import QtQuick
import QtQuick.Controls as Controls
import org.kde.kirigami as Kirigami
Kirigami.ApplicationWindow {
title: "MenuDialog"
width: 400
height: 600
pageStack.initialPage: Kirigami.Page {
id: page
actions: Kirigami.Action {
icon.name: "list-add"
text: menuDialog.title
onTriggered: menuDialog.open()
}
Kirigami.MenuDialog {
id: menuDialog
title: i18n("Track options")
showCloseButton: false
actions: [
Kirigami.Action {
icon.name: "media-playback-start"
text: i18n("Play")
tooltip: i18n("Start playback of the selected track")
},
Kirigami.Action {
enabled: false
icon.name: "document-open-folder"
text: i18n("Show in folder")
tooltip: i18n("Show the file for this song in the file manager")
},
Kirigami.Action {
icon.name: "documentinfo"
text: i18n("View details")
tooltip: i18n("Show track metadata")
},
Kirigami.Action {
icon.name: "list-add"
text: i18n("Play next")
tooltip: i18n("Add the track to the queue, right after the current track")
},
Kirigami.Action {
icon.name: "list-add"
text: i18n("Add to queue")
tooltip: i18n("Enqueue current track")
}
]
}
}
}