Vrste dialogov

Različni načini serviranja in vnosa podatkov.

Kirigami.Dialog je preprosta komponenta, ki jo lahko uporabite za dopolnitev vsebine, prikazane na strani aplikacije. Prikazuje lahko neinteraktivno vsebino (samo besedilo) in interaktivno vsebino (obrazci, pogledi seznamov in gumbi).

Lahko jih opustite tako, da kliknete ali tapnete zunaj njihovega območja ali tako, da kliknete gumb za zapiranje v glavi.

Dialog

Standardni Kirigami.Dialog se uporablja za ustvarjanje pogovornih oken po meri. Zelo enostavno jih je razširiti:

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"
            }
        }
    }
}

Enostavno pogovorno okno, ki vsebuje samo besedilo

Kot je prikazano v uvodnem učbeniku o pogovornih oknih, je mogoče zajeti tudi standardButton(button), da mu dodelite neko vedenje, na primer vezavo za omogočanje le pod določenimi pogoji.

Ta vrsta pogovornega okna je splošna in velja za večino primerov uporabe ter dobro deluje s kompleksno interaktivno vsebino (zlasti s pogledi):

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
                // namigi za dimenzije pogovornega okna
                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
                }
            }
        }

    }
}

Preprosto drsno pogovorno okno

Vendar pa boste v večini primerov verjetno želeli uporabiti eno od njegovih izpeljanih vrst pogovornih oken, Kirigami.PromptDialog ali Kirigami.MenuDialog.

PromptDialog

Kirigami.PromptDialog je v bistvu pogovorno okno z vgrajeno oznako in privzeto contentPadding, ki se uporablja za poziv uporabniku za nekatere informacije. Ta vrsta pogovornega okna naj bi se uporabljala samo za preproste pozive z da/ne ali kratke zahteve za uporabniški vnos.

Njegova glavna lastnost je Kirigami.Dialog.subtitle, v katero bi dodali besedilo. Če je katera koli komponenta QML dodana kot podrejena pogovornemu oknu, bo ta komponenta namesto tega prevzela mesto podnapisa in to je mogoče izrecno določiti z Kirigami.Dialog.mainItem.

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

Preprosto pogovorno okno, ki vsebuje samo besedilo

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…"
                }
            }
        }
    }
}

Pogovorno okno z besedilnim poljem po meri

Kirigami.MenuDialog je specializirano pogovorno okno, ki se uporablja za seznam izbire možnosti, ki jih lahko uporabnik klikne, z uporabo lastnosti 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")
                }
            ]
        }
    }
}

Preprost pogovorni meni s seznamom dejanj, kot sta predvajanje in premor za medije