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

أنواع الحوارات

طرق متنوعة لتقديم البيانات وإدخالها.

Kirigami.Dialog هو مكون بسيط يمكنك استخدامه لتكملة المحتوى المعروض على صفحة التطبيق. يمكنه عرض محتوى غير تفاعلي (نص فقط) ومحتوى تفاعلي (نماذج، قوائم عرض وأزرار).

يمكن إغلاقها بالنقر أو الضغط خارج مساحتها أو بالنقر على زر الإغلاق في الرأس.

حوار

يُستخدم 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")
                }
            ]
        }
    }
}

حوار قائمة بسيط يعرض إجراءات مثل التشغيل والإيقاف المؤقت للوسائط