Сторінки «Про програму» FormCard
Додатки Kirigami — це додатковий набір візуальних компонентів, які добре працюють на мобільних пристроях і комп'ютерах і гарантовано є багатоплатформовими. З лаштунками вони використовують Kirigami для створення своїх компонентів.
Деякі з цих компонентів надають змогу показати вашу роботу та роботу інших учасників у вашому проєкті, а також згадати бібліотеки, які використовуються у вашій програмі: Про KDE і AboutPage.
Про KDE
Кожна нова кнопка, яку ми створили на попередньому кроці, має відкривати нову сторінку. Ви можете додати нові сторінки, створивши їх як
компоненти
, а потім використавши pageStack.layers.push()
для кожної кнопки, щоб завантажити цю сторінку до нашого main.qml
:
|
|
Ось і справді! Усе, що потрібно, це створити екземпляр FormCard.AboutKDE
. Ви маєте побачити щось подібне після натискання кнопки AboutKDE:
Сторінка «Про програму»
Сторінка AboutPage програми трохи складніша, але користуватися нею все одно дуже просто. Ми додамо новий файл QML, який міститиме інформацію, необхідну для нашої сторінки з інформацією. Спочатку в нашому файлі 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>
А наш contents/ui/MyAboutPage.qml
має містити таке:
import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import org.kde.about 1.0
FormCard.AboutPage {
aboutData: About
}
Тут ми використовуємо відомості, які встановлено за допомогою
KAboutData
у нашому main.cpp
. Ось коротке нагадування того, що містить main.cpp
:
qmlRegisterSingletonType(
"org.kde.about", // <========== використовують в імпортуванні
1, 0, "About", // <========== Об'єкт C++ експортовано як тип QML
[](QQmlEngine *engine, QJSEngine *) -> QJSValue {
return engine->toScriptValue(KAboutData::applicationData());
}
);
Об'єкт About
, який ми експортували на бік QML за допомогою
qmlRegisterSingletonType()
, містить дані з
KAboutData::applicationData()
, і це те, що ми передаємо до властивості aboutData
.
Нарешті, ми додаємо нашу нову MyAboutPage до нашого main.qml
:
|
|
Сторінка «Про програму» нашої програми має виглядати так:
Використання JSON замість KAboutData
Якщо вам цікаво, чому сторінку About зберігали окремо, а не вбудовано в main.qml
, це тому, що вона дозволяє встановити спеціальну модель для властивості aboutData
.
Замість того, щоб надавати вашій сторінці «Про програму» інформації з
KAboutData
, можна передати об'єкт JSON безпосередньо. Вам все одно потрібно буде використовувати
QApplication::setWindowIcon()
у вашому main.cpp
, щоб було показано піктограму вашої програми.
Внесіть десь такі зміни до вашого MyAboutPage.json
:
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" : ""
}
}
Головний об'єкт JSON містить ключі displayName
, productName
, homepage
тощо. Кожному з ключів authors
, credits
, translators
і licenses
можна передати масив об'єктів. Об'єкти, передані до authors
, credits
і translators
, мають однакові ключі, тому їх можна показувати у окремих розділах для кожного, тоді як licenses
включає ключі name
, text
і spdx
для кожної доданої ліцензії, оскільки часто той самий проєкт ліцензовано з використанням різних ліцензій.
Ці ключі є необов'язковими, але очікуваною є розумна мінімальна кількість ключів, щоб ваша програма не мала порожніх полів: displayName
, version
, description
, homepage
, copyrightStatement
і authors
. Проте вам рекомендується заповнити якомога більше ключів.