Preučevanje main.cpp

Razumevanje osrednje datoteke naše zaledne kode

Vloga main.cpp

Medtem ko se QML uporablja za vmesnik aplikacij Kirigami, je zaledje običajno napisano v C++ zaradi hitrosti in prilagodljivosti tega jezika. Medtem ko smo na prejšnjih straneh podrobno razložili QML, bomo potrebno pridobiti še razumevanje naše zaledne kode C++, da bi lahko ustvarjali aplikacije, ki so bolj uporabne od tega, kar lahko dosežemo s čistim QML.

Tukaj bomo preučili datoteko main.cpp, ki smo jo ustvarili na strani Getting Started, da bomo lahko bolje razumeli, kaj se dogaja v osrednjo datoteko C++ naše aplikacije. Čeprav je to osnovni main.cpp, bodo funkcije, ki jih bomo pregledali, ostale bistvene, ne glede na to, kakšno aplikacijo boste ustvarili.

Kaj počne

 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
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QtQml>
#include <QUrl>
#include <QQuickStyle>
#include <KLocalizedContext>
#include <KLocalizedString>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    KLocalizedString::setApplicationDomain("helloworld");
    QCoreApplication::setOrganizationName(QStringLiteral("KDE"));
    QCoreApplication::setOrganizationDomain(QStringLiteral("kde.org"));
    QCoreApplication::setApplicationName(QStringLiteral("Hello World"));

    if (qEnvironmentVariableIsEmpty("QT_QUICK_CONTROLS_STYLE")) {
        QQuickStyle::setStyle(QStringLiteral("org.kde.desktop"));
    }

    QQmlApplicationEngine engine;

    engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    if (engine.rootObjects().isEmpty()) {
        return -1;
    }

    return app.exec();
}

Najprej moramo vključiti številne datoteke glav Qt header files, ki nam omogočajo uporabo njihovih funkcij. V tem primeru vključujemo številne glave Qt, ki obravnavajo logiko aplikacij, branje datotek QML in dostop do datotek določenih v resources.qrc.

Nato ustvarimo pojavek QApplication, ki ga imenujemo aplikacija ( app). Tukaj prepustimo argumente konstruktorjuargc and argv, prepustimo razčlenjevanje Qt in uporabimo argumente.

Nastavili smo tudi nekaj metapodatkov, ki se nanašajo na aplikacijo. Ti vključujejo organizacijo, ki je ustvarila aplikacijo, spletno stran organizacije in ime aplikacije. Te lastnosti nastavimo v QCoreApplication, predmetu, ki omogoča zanko dogodka za aplikacije ne glede na to, ali imajo uporabniški vmesnik ali ne (torej, če bi zaganjali naš program brez uporabniškega vmesnika, bi bili ti metapodatki vseeno nastavljeni).

Da bi bila naša aplikacija videti izvirna v Plasmi, Windows ali GNOME, uporabljamo QQuickStyle::setStyle() da bomo uporabili qqc2-desktop-style.

QQmlApplicationEngine nam dovoli naložiti aplikacijo iz datoteke QML, kar storimo v naslednji vrstici. V engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); nalagamo QML iz URL-ja v Qt Resource File (resources.qrc).

Nato preverimo, ali je naš mehanizem pravilno naložil datoteko QML, tako da preverimo, da rootObjects() ni prazen. Nato lahko zaženemo aplikacijo z app.exec() .