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 preiskali datoteko main.cpp, ki smo jo ustvarili na strani 'Getting Started', da bomo bolje razumeli, kaj se dogaja v osrednji datoteki C++ naše aplikacije. Čeprav gre za osnovo 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
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QtQml>
#include <QUrl>
#include <KLocalizedContext>
#include <KLocalizedString>

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

    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.

Vnesite našo glavno funkcijo. Njena prva vrstica QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); omogoča umerjanje visokega DPI. Tako lahko naša aplikacija pravilno spreminja velikost na napravah z različnimi gostotami slikovnih točk na zaslonu.

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).

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() .