QML: differenze tra le versioni

Da PNLUG.
(ritorno)
m (aggiornamento link dopo la prima revisione)
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 2: Riga 2:
 
'''Qt Modelling Language'''
 
'''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.
+
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'''.<br>
+
''QML'' è un linguaggio di programmazione interpretato gestito dalle '''Qt'''.<br>
Quando il greeter di sddm si avvia, esegue uno script qml chiamato '''Main.qml''', contenuto nella cartella indicata dall'opzione --theme.
+
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:
 
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 in questo momento, gestisce la funzione di autocompletamento.
+
'''UNameBox.qml''', probabilmente, è un oggetto provvisorio, che tuttavia gestisce, attualmente, la funzione di autocompletamento.
  
 
Leggiamo la riga 31 del programma UNameBox.qml:
 
Leggiamo la riga 31 del programma UNameBox.qml:
 
   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 UserModel.h e 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 orginale.
+
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:
 
Nel file UNameBox.qml sono contenuti, in tutto, '''5''' richiami al modulo UserModel:
  property int auC: userModel.initAutoCompletion
+
  31  property int auC: userModel.initAutoCompletion
   userModel.head=event.text
+
   103  userModel.head=event.text
   userModel.tail=""
+
   104  userModel.tail=""
   head = userModel.head
+
   105  head = userModel.head
   tail = userModel.tail
+
   106  tail = userModel.tail
  
il secondo e il terzo sono chiamate in lettura: il file QML passa un valore al programma in linguaggio C++.<br>
+
La seconda e la terza sono chiamate ''in scrittura'': il file QML passa un valore al programma in linguaggio C++.<br>
il terzo e il quarto sono chiamate in scrittura: il programma C++ restituisce un valore che può essere usato dal programma QML.
+
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>
 +
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