QML: differenze tra le versioni

Da PNLUG.
(in scrittura)
m (aggiornamento link dopo la prima revisione)
 
Riga 8: Riga 8:
  
 
Nella prima versione del nostra patch a sddm sono contenuti due file qml nuovi:
 
Nella prima versione del nostra patch a sddm sono contenuti due file qml nuovi:
# Il thema autoComp: [https://github.com/cloc3/sddm/blob/autoCompletion/data/themes/autoComp/Main.qml| Main.qml];
+
# Il thema autoComp: [https://github.com/cloc3/sddm/blob/autoCompletion/data/themes/autoComp-v1/Main.qml| Main.qml];
# La componente [https://github.com/cloc3/sddm/blob/autoCompletion/components/2.0/UNameBox.qml| UNameBox.qml].
+
# La componente [https://github.com/cloc3/sddm/blob/autoCompletion/components-v1/2.0/UNameBox.qml| UNameBox.qml].
  
 
'''UNameBox.qml''', probabilmente, è un oggetto provvisorio, che tuttavia gestisce, attualmente, la funzione di autocompletamento.
 
'''UNameBox.qml''', probabilmente, è un oggetto provvisorio, che tuttavia gestisce, attualmente, la funzione di autocompletamento.
Riga 16: Riga 16:
 
   property int auC: userModel.initAutoCompletion;
 
   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 [https://github.com/cloc3/sddm/blob/autoCompletion/src/greeter/UserModel.h UserModel.h] e [https://github.com/cloc3/sddm/blob/autoCompletion/src/greeter/UserModel.cpp UserModel.cpp].
+
Questa singola istruzione definisce una variabile intera chiamata '''auC''' e attribuisce ad essa un valore, determinato dalla proprietà ''initAutoCompletion'' definita all'interno dei file [https://github.com/cloc3/sddm/blob/autoCompletion-v1/src/greeter/UserModel.h UserModel.h] e [https://github.com/cloc3/sddm/blob/autoCompletion-v1/src/greeter/UserModel.cpp UserModel.cpp].
  
 
Con questa semplicissima ''sintassi'', il programma QML consente di integrare nuove funzionalità non ancora previste dal programma originale.
 
Con questa semplicissima ''sintassi'', il programma QML consente di integrare nuove funzionalità non ancora previste dal programma originale.

Versione attuale delle 00:04, 16 ago 2016

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