QML

Da PNLUG.
Versione del 16 ago 2016 alle 00:04 di Cloc3 (Discussione | contributi) (aggiornamento link dopo la prima revisione)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Cosa son le QML

Qt Modelling Language

Sddm è un programma che fa uso delle Qt: una libreria di risorse grafiche che facilita la vita ai programmatori della domenica, come noi.

QML è un linguaggio di programmazione interpretato gestito dalle Qt.
Quando il greeter di sddm si avvia, esegue uno script qml chiamato Main.qml, contenuto nella cartella indicata dall'opzione --theme.

Nella prima versione del nostra patch a sddm sono contenuti due file qml nuovi:

  1. Il thema autoComp: Main.qml;
  2. La componente UNameBox.qml.

UNameBox.qml, probabilmente, è un oggetto provvisorio, che tuttavia gestisce, attualmente, la funzione di autocompletamento.

Leggiamo la riga 31 del programma UNameBox.qml:

 property int auC: userModel.initAutoCompletion;

Questa singola istruzione definisce una variabile intera chiamata auC e attribuisce ad essa un valore, determinato dalla proprietà initAutoCompletion definita all'interno dei file UserModel.h e UserModel.cpp.

Con questa semplicissima sintassi, il programma QML consente di integrare nuove funzionalità non ancora previste dal programma originale.

Nel file UNameBox.qml sono contenuti, in tutto, 5 richiami al modulo UserModel:

  31  property int auC: userModel.initAutoCompletion
 103  userModel.head=event.text
 104  userModel.tail=""
 105  head = userModel.head
 106  tail = userModel.tail

La seconda e la terza sono chiamate in scrittura: il file QML passa un valore al programma in linguaggio C++.
La prima, quarta e la quinta sono chiamate in lettura: il programma C++ restituisce un valore che viene reso disponibile al programma QML.

Osserviamo per chiarezza che i termini lettura e scrittura vanno intesi, in questo contesto, dal punto di vista del programma qml.
Per esempio, la riga 103 è in scrittura perché il programma qml ordina l'acquisizione dell'evento di tastiera da parte del metodo setHead(Qstring inputString), che lo elabora privatamente.

torna all'indice