FormCard o programu

Naučite se ustvariti stran O programu, da si pripišete zasluge za aplikacijo.

Kirigami Addons je dodaten nabor vizualnih komponent, ki dobro delujejo na mobilnih in namiznih napravah ter so zajamčeno medplatformski. Pod pokrovom uporablja Kirigami za ustvarjanje njegovih komponent.

Nekatere od teh komponent vam omogočajo, da si pripišete priznanje svojemu delu in delu drugih sodelujočih v vašem projektu ter omenite uporabljena ogrodja v vaši aplikaciji: O KDE in AboutPage.

O namizju KDE

Vsak nov gumb, ki smo ga ustvarili v prejšnjem koraku, bi moral odpreti novo stran. Nove strani lahko dodate tako, da jih ustvarite kot Components in nato uporabite pageStack.layers.push() za vsak gumb za nalaganje te strani v našem main.qml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import QtQuick 2.15
import QtQuick.Layouts 1.15

import org.kde.kirigami 2.20 as Kirigami
import org.kde.kirigamiaddons.formcard 1.0 as FormCard

import org.kde.about 1.0

Kirigami.ApplicationWindow {
    id: root
    width: 600
    height: 700

    Component {
        id: aboutkde
        FormCard.AboutKDE {}    // <==========
    }

    pageStack.initialPage: Kirigami.ScrollablePage {
        ColumnLayout {
            FormCard.FormCard {
                FormCard.FormButtonDelegate {
                    id: aboutKDEButton
                    icon.name: "kde"
                    text: i18n("About KDE Page")
                    onClicked: root.pageStack.layers.push(aboutkde)     // <==========
                }

                FormCard.FormButtonDelegate {
                    id: aboutPageButton
                    icon.name: "applications-utilities"
                    text: i18n("About Addons Example")
                }

                FormCard.FormButtonDelegate {
                    id: settingsButton
                    icon.name: "settings-configure"
                    text: i18n("Single Settings Page")
                }
            }
        }
    }
}

To je res to! Vse kar je potrebno je instanciranje FormCard.AboutKDE. Po kliku gumba AboutKDE bi morali videti nekaj takega:

Stran o programu

Aplikacija AboutPage je nekoliko bolj zapletena, vendar je še vedno zelo enostavna za uporabo. Dodali bomo novo datoteko QML, ki bo vsebovala informacije, potrebne za našo stran o tem. Najprej v naši datoteki resources.qrc:

<RCC version="1.0">
<qresource prefix="/">
    <file alias="main.qml">contents/ui/main.qml</file>
    <file alias="MyAboutPage.qml">contents/ui/MyAboutPage.qml</file>
</qresource>
</RCC>

In naša datoteka contents/ui/MyAboutPage.qml bi morala imeti naslednje:

import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import org.kde.about 1.0

FormCard.AboutPage {
    aboutData: About
}

Tu uporabljamo podatke, ki smo jih nastavili z KAboutData v našem main.cpp. Tukaj je kratek opomnik, kaj je v main.cpp:

qmlRegisterSingletonType(
    "org.kde.about",        // <========== uporabljeno pri uvozu
    1, 0, "About",          // <========== C++ predmet izvožen kot vrsta QML
    [](QQmlEngine *engine, QJSEngine *) -> QJSValue {
        return engine->toScriptValue(KAboutData::applicationData());
    }
);

Objekt About, ki smo ga izvozili na stran QML z uporabo qmlRegisterSingletonType() vsebuje podatke iz KAboutData::applicationData() in to je tisto, kar posredujemo v lastnost aboutData.

Na koncu dodamo našo novo MyAboutPage v naš main.qml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import QtQuick 2.15
import QtQuick.Layouts 1.15

import org.kde.kirigami 2.20 as Kirigami
import org.kde.kirigamiaddons.formcard 1.0 as FormCard

import org.kde.about 1.0

Kirigami.ApplicationWindow {
    id: root
    width: 600
    height: 700

    Component {
        id: aboutkde
        FormCard.AboutKDE {}
    }

    Component {
        id: aboutpage
        MyAboutPage {}      // <==========
    }

    pageStack.initialPage: Kirigami.ScrollablePage {
        ColumnLayout {
            FormCard.FormCard {
                FormCard.FormButtonDelegate {
                    id: aboutKDEButton
                    icon.name: "kde"
                    text: i18n("About KDE Page")
                    onClicked: root.pageStack.layers.push(aboutkde)
                }

                FormCard.FormButtonDelegate {
                    id: aboutPageButton
                    icon.name: "applications-utilities"
                    text: i18n("About Addons Example")
                    onClicked: root.pageStack.layers.push(aboutpage)    // <==========
                }

                FormCard.FormButtonDelegate {
                    id: settingsButton
                    icon.name: "settings-configure"
                    text: i18n("Single Settings Page")
                }
            }
        }
    }
}

Stran About page bi morala izgledati takole:

Uporaba JSON namesto KAboutData

Če ste se spraševali, zakaj je bila stran About page ločena, namesto vdelana v main.qml, to je zato, ker omogoča nastavitev modela po meri za lastnost aboutData.

Namesto da bi vaši strani z informacijami omogočili, da pridobi informacije iz KAboutData, je mogoče objekt JSON posredovati neposredno. Še vedno boste morali uporabiti QApplication::setWindowIcon() v vašem main.cpp, da se prikaže ikona aplikacije.

Spremenite svoj MyAboutPage.json v nekaj takega:

import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import org.kde.about 1.0

FormCard.AboutPage {
    title: i18n("About")
    aboutData: {
        "displayName" : "Addons Example",
        "productName" : "",
        "componentName" : "addonsexample",
        "shortDescription" : "This program shows how to use AboutKDE and AboutPage",
        "homepage" : "https://kde.org",
        "bugAddress" : "",
        "version" : "1.0",
        "otherText" : "Optional text shown in the About",
        "authors" : [
            {
                "name" : "John Doe",
                "task" : "Maintainer",
                "emailAddress" : "",
                "webAddress" : "",
                "ocsUsername" : ""
            }
        ],
        "credits" : [],
        "translators" : [],
        "licenses" : [
            {
                "name" : "GPL v3",
                "text" : "Long license text goes here",
                "spdx" : "GPL-3.0"
            }
        ],
        "copyrightStatement" : "© 2023",
        "desktopFileName" : ""
    }

}

Glavni objekt JSON tukaj vsebuje ključe displayName, productName, homepage in tako naprej. Prek ključev authors, credits, translators in licences je mogoče posredovati niz predmetov. Predmeti, ki so prešli na authors, credits in translators si delijo iste ključe, tako da so lahko prikazani vsak v svojem razdelku, medtem ko licences vključuje ključename, text in spdx za vsako dodano licenco, saj ni neobičajno, da je isti projekt za vključenih več licenc.

Ti ključi so neobvezni, vendar se pričakuje razumno minimalno število ključev, da vaša aplikacija nima praznih polj: displayName, version, description, homepage, copyrightStatement in authors. Seveda se spodbuja, da izpolnite čim več ključev.