Stran o programu

Informacije o vaši aplikaciji

Stran o programu vam omogoča, da imate stran, ki prikazuje obvestilo o avtorski pravici aplikacije skupaj z navedbo avtorjev prispevkov in nekaterih informacij, na kateri platformi se izvaja.

Najprej bomo ustvarili dve datoteki v imeniku »src/» z imenom »about.cpp« in »about.h«.

about.h

#pragma once

#include <QObject>
#include <KAboutData>

class AboutType : public QObject
{
    Q_OBJECT
    Q_PROPERTY(KAboutData aboutData READ aboutData CONSTANT)
public:
    [[nodiscard]] KAboutData aboutData() const
    {
        return KAboutData::applicationData();
    }
};

V datoteki ».h« ustvarimo ta razred »AboutType«, ki je dedovan iz QObject.

Makro »Q_OBJECT« pove, da ta razred uporablja lastne signale in reže, makro »Q_PROPERTY« se vede kot član podatkov razreda, vendar ima dodatne funkcije, to bo omogočilo, da ima naša koda QML dostop do tega razreda.

Metoda »aboutData« bo vrnila podatke programa iz »KAboutData«.

about.cpp

#include "about.h"

V datoteko ».cpp« samo vključimo datoteko ».h«.

main.cpp

...
#include <KAboutData>
#include "config-helloworld.h"

#include "about.h"

int main(int argc, char *argv[])
{
    ...

    KAboutData aboutData(
                         // Ime programa, ki se uporablja interno.
                         QStringLiteral("helloworld"),
                         // Prikazan niz imena programa.
                         i18nc("@title", "Hello World"),
                         // Niz programske različice.
                         QStringLiteral(HELLOWORLD_VERSION_STRING),
                         // Kratek opis tega, kaj aplikacija počne.
                         i18n("Hello world application"),
                         // Dovoljenje, pod katerim je ta koda izdana.
                         KAboutLicense::GPL,
                         // Izjava o avtorski pravici.
                         i18n("(c) 2021"));
    aboutData.addAuthor(i18nc("@info:credit", "Your name"), i18nc("@info:credit", "Author Role"), QStringLiteral("your@email.com"), QStringLiteral("https://yourwebsite.com"));
    KAboutData::setApplicationData(aboutData);

    QQmlApplicationEngine engine;

    qmlRegisterSingletonType<AboutType>("org.kde.helloworld", 1, 0, "AboutType", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
        Q_UNUSED(engine)
        Q_UNUSED(scriptEngine)

        return new AboutType();
    });
    ...
}

V datoteko cpp vključujemo »KAboutData« in datoteko ».h«, ki smo jo pravkar ustvarili, KAboutData je jedrna komponenta Ogrodja KDE, ki hrani informacije o aplikaciji, ki jih lahko nato ponovno uporabijo številne druge komponente Ogrodja KDE. Nov predmet »KAboutData« iniciramo z dokaj popolnim privzetim konstruktorjem in dodamo informacije o avtorju.

Prav tako vključujemo datoteko »config-helloworld.h«, ki nam daje to spremenljivko »HELLOWORLD_VERSION_STRING«, ki jo bomo nastavili kasneje v teh vajah.

Ko so vsi zahtevani podatki nastavljeni, pokličemo »KAboutData::setApplicationData« za inicializacijo lastnosti predmeta QApplication.

Po opredelitvi pogona QML ustvarimo qmlRegisterSingletonType, prvi argument je URI, ki je v osnovi ime paketa, drugi in tretji argument sta glavna različica in podrazličica, četrti je ime vrste, ime, ki ga bomo klicali pri dostopanju do metod »AboutType«.

V lambdi »qmlRegisterSingletonType« vrnemo nov predmet »AboutType«;

main.qml

...
import org.kde.helloworld 1.0

Kirigami.ApplicationWindow {
    ...

    globalDrawer: Kirigami.GlobalDrawer {
        ...
        actions: [
            ...
            Kirigami.Action {
                text: i18n("About")
                icon.name: "help-about"
                onTriggered: pageStack.layers.push(aboutPage)
            }
            ...
        ]
    }

    Component {
        id: aboutPage

        Kirigami.AboutPage {
            aboutData: AboutType.aboutData
        }
    }
}

Najprej uvozimo paket, ki smo ga določili v datoteki »main.cpp«, dodamo »Kirigami.Action« v naš globalni predal, ki nas bo poslal na stran o programu, in ustvarimo komponento z »Kirigami.AboutPage« v njen. Stran o programu ima samo eno lastnost: »aboutData«, nato mu podajamo »Controller.aboutData«.

CMakeLists

...
project(helloworld)
set(PROJECT_VERSION "1.0")

...
include(ECMSetupVersion)
include(ECMGenerateHeaders)
include(ECMPoQmTools)
...

ecm_setup_version(${PROJECT_VERSION}
    VARIABLE_PREFIX HELLOWORLD
    VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/config-helloworld.h"
)

...
find_package(KF5 ${KF_MIN_VERSION} ... CoreAddons)
...

V datoteki CMakeLists .txt v naši mapi najvišje ravni dodajte »CoreAddons« v modul »find_package«. Prav tako boste želeli dodati te tri vključitve »ECM« (include), ki nam bodo omogočile uporabo funkcije »ecm_setup_version«, za to funkcijo uporabimo spremenljivko »PROJECT_VERSION« v naši kodi, zato moramo spremeniti samo eno spremenljivko pri poviševanju različic.

...
add_executable(helloworld main.cpp controller.cpp resources.qrc)
target_link_libraries(helloworld ... KF5::CoreAddons)

V datoteko CMakeLists.txt v imeniku »src« dodajte »controller.cpp« k modulu »add_executable« in »KF5::CoreAddons« k modulu »target_link_libraries«.

Zagon aplikacije

Če zaženete aplikacijo in sprožite dejanje »O programu« v globalnem predalu, bi morali videti našo stran o programu.

![Posnetek zaslona strani o programu Kirigami] (o strani.png)