QML: differenze tra le versioni

Da PNLUG.
(refusi)
m (aggiornamento link dopo la prima revisione)
 
(Una versione intermedia di uno stesso utente non è mostrata)
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 semplicissima 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.
Riga 27: Riga 27:
 
   106  tail = userModel.tail
 
   106  tail = userModel.tail
  
La seconda e la terza sono chiamate in scrittura: il file QML passa un valore al programma in linguaggio C++, che lo memorizza in una variabile privata, per un farne uso successivamente.<br>
+
La seconda e la terza sono chiamate ''in scrittura'': il file QML passa un valore al programma in linguaggio C++.<br>
La prima, quarta e la quinta sono chiamate in lettura: il programma C++ restituisce un valore che può essere usato dal programma QML.<br>
+
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.<br>
 
Osserviamo per chiarezza che i termini ''lettura'' e ''scrittura'' vanno intesi, in questo contesto, dal punto di vista del programma qml.<br>
Per esempio, la riga 103 è in scrittura perché il  programma qml ordina la trascrizione in registro privato del valore trasmesso al metodo ''setHead(Qstring inputString)''.
+
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.
  
 
[[Una_patch_ad_SDDM| torna all'indice]]
 
[[Una_patch_ad_SDDM| torna all'indice]]

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