Skip to main content
Перейти к содержимому

Страницы «О программе» в FormCard

Учимся создавать страницы «О программе», чтобы указать авторов приложения

Kirigami Addons — это дополнительный набор визуальных компонентов, которые хорошо работают на мобильных устройствах и настольных компьютерах и гарантированно являются кроссплатформенными. Для создания компонентов используется Kirigami.

Некоторые из этих компонентов позволяют указать авторство своей работы и работы других участников проекта, а также упомянуть используемые в приложении фреймворки: AboutKDE и AboutPage.

О KDE

Каждая новая кнопка, созданная на предыдущем шаге, должна открывать новую страницу. Добавить новые страницы можно, создав их как Components и затем используя pageStack.layers.push() для каждой кнопки, чтобы загрузить эту страницу в 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
import QtQuick.Layouts

import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard 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")
                }
            }
        }
    }
}

Вот и всё! Достаточно создать экземпляр FormCard.AboutKDE. После нажатия кнопки AboutKDE должно появиться примерно следующее:

Страница «О программе»

Страница AboutPage приложения немного сложнее, но пользоваться ею по-прежнему очень просто.

Чтобы создать простую страницу «О программе», использующую данные, заданные с помощью KAboutData::setApplicationData(aboutData); в main.cpp, добавьте в 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
import QtQuick.Layouts

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

import org.kde.about 1.0

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

    Component {
        id: aboutkde
        FormCard.AboutKDE {}
    }

    Component {
        id: aboutpage
        FormCard.AboutPage {}
    }

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

Страница «О программе» нашего приложения должна выглядеть так:

Использование JSON вместо KAboutData

Вместо того чтобы страница «О программе» получала информацию из KAboutData, можно передать объект JSON напрямую. Тем не менее, чтобы значок приложения показывался, потребуется использовать QApplication::setWindowIcon() в файле main.cpp.

Создайте файл MyAboutPage.qml следующим образом:

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

FormCard.AboutPage {
    title: i18nc("@action:button", "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" : ""
    }

}

Затем измените файл Main.qml, добавив новую страницу «О программе»:

Основной объект JSON здесь содержит ключи displayName, productName, homepage и так далее. Каждому из ключей authors, credits, translators и licenses можно передать массив объектов. Объекты, передаваемые в authors, credits и translators, используют одни и те же ключи, что позволяет показывать их в отдельных разделах, а licenses содержит ключи name, text и spdx для каждой добавленной лицензии, поскольку один и тот же проект нередко включает несколько лицензий.

Эти ключи необязательны, но ожидается разумный минимум ключей, чтобы в приложении не было пустых полей: displayName, version, description, homepage, copyrightStatement и authors. Тем не менее рекомендуется заполнить как можно больше ключей.