Pàgina «Quant al»

Informació sobre la vostra aplicació

La pàgina «Quant al» permet tenir una pàgina que mostra les notes dels drets d’autor de l’aplicació juntament amb els col·laboradors i certa informació sobre la plataforma en la qual s’està executant.

Primer, crearem dos fitxers a la carpeta src/ anomenats about.cpp i 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();
    }
};

En el fitxer .h crearem la classe AboutType, la qual s’hereta des de QObject.

La macro Q_OBJECT li indica al compilador que aquesta classe empra senyals i ranures pròpies, la macro Q_PROPERTY es comporta com un membre de dades de classe, però té característiques addicionals, permetrà que el nostre codi QML tingui accés a aquesta classe.

El mètode aboutData retornarà les dades de l’aplicació des de KAboutData.

about.cpp

#include "about.h"

En el fitxer .cpp senzillament inclourem el fitxer .h.

main.cpp

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

#include "about.h"

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

    KAboutData aboutData(
                         // El nom del programa que s'utilitza internament.
                         QStringLiteral("helloworld"),
                         // Una cadena de nom visible del programa.
                         i18nc("@title", "Hello World"),
                         // La cadena de versió del programa.
                         QStringLiteral(HELLOWORLD_VERSION_STRING),
                         // Una descripció breu del que fa l'aplicació.
                         i18n("Hello world application"),
                         // La llicència sota la qual es publica aquest codi.
                         KAboutLicense::GPL,
                         // Declaració dels drets d'autor.
                         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();
    });
    ...
}

En el fitxer cpp incloem KAboutData i acabem de crear el fitxer .h, KAboutData és un component central dels Frameworks del KDE que emmagatzema la informació sobre una aplicació, la qual després pot ser reutilitzada per molts altres components dels Frameworks del KDE. Instanciem un objecte nou KAboutData amb el seu constructor predeterminat força complet i afegim la informació de l’autor.

També incloem aquest fitxer config-helloworld.h, el qual ens dona aquesta variable HELLOWORLD_VERSION_STRING que configurarem més endavant en aquesta guia d’aprenentatge.

Una vegada s’ha establert tota la informació requerida, cridem a KAboutData::setApplicationData per a inicialitzar les propietats de l’objecte QApplication .

Després de la definició QML Engine, crearem una qmlRegisterSingletonType, el primer argument és un URI, bàsicament un nom de paquet, el segon i el tercer arguments són les versions major i menor respectivament, el quart és el nom del tipus, el nom que cridarem en accedir als mètodes de AboutType.

En la lambda qmlRegisterSingletonType només retornem un objecte AboutType nou.

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

Primer, importem el paquet que definim en el fitxer main.cpp, afegim una Kirigami.Action al nostre calaix global que ens enviarà a la pàgina quant al i crearem un component amb una Kirigami.AboutPage en ell, la pàgina Quant al només en té una propietat: aboutData, després li passarem 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)
...

En el fitxer CMakeLists.txt en la nostra carpeta de nivell superior, afegiu CoreAddons al mòdul find_package. També voldreu afegir aquestes tres inclusions d'ECM, les quals ens permetran utilitzar la funció ecm_setup_version, aquesta funció permet utilitzar la variable PROJECT_VERSION en el nostre codi, de manera que només necessitarem canviar una variable quan fem augmentar les versions.

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

En el fitxer CMakeLists.txt a la carpeta src, afegiu controller.cpp al mòdul add_executable i KF5::CoreAddons al mòdul target_link_libraries.

Executar l’aplicació

Ara, si executeu la vostra aplicació i activeu l’acció «About» en el calaix global, s’hauria de mostrar la nostra pàgina.

Captura de pantalla d&rsquo;una pàgina «Quant al» creada amb el Kirigami