Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

Qt

Choisissez la catégorie, puis la rubrique :

Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

L'objet global de QML

Il contient toutes les propriétés de l'objet global de JavaScript plus :

L'objet Qt

L'objet Qt fournit les énumérations et fonctions utiles provenant de Qt, pour usage dans tous les fichiers QML.

XMLHttpRequest

Les scripts QML gèrent l'objet XMLHttpRequest, qui peut être utilisé pour obtenir des données à partir d'un réseau de manière asynchrone.

La bibliothèque XMLHttpRequest implémente les mêmes standards W3C que la plupart des navigateurs internet populaires avec les exceptions suivantes :

De plus, l'arbre XML DOM réponse responseXML actuellement géré par QML est un sous-ensemble réduit de l'API DOM Level 3 Core gérée dans les navigateurs web. Les objets et propriétés suivants sont gérés dans l'implémentation de QML :

  • n?ud :
    • nodeName : nom du n?ud,
    • nodeValeur : valeur du n?ud,
    • nodeType : type du n?ud,
    • parentNode : n?ud parent,
    • childNodes : n?ud enfants,
    • firstChild : premier enfant,
    • lastChild : dernier enfant,
    • previousSibling : frère précédent,
    • nextSibling : frère suivant,
    • attributes : attributs ;
  • document :
    • xmlVersion : version du XML,
    • xmlEncoding : encodage du XML,
    • xmlStandalone : XML autonome,
    • documentElement : élément document ;
  • élément :
    • tagName : nom du tag ;
  • attribut :
    • name : nom,
    • value : valeur,
    • ownerElement : élément propriétaire ;
  • données du caractère :
    • data : donnée,
    • length : taille ;
  • texte :
    • isElementContentWhitespace : si l'élément contient des espaces,
    • wholeText : texte entier.

L'exemple de XMLHttpRequest présente l'utilisation de l'objet XMLHttpRequest afin de réaliser une requête et de lire les entêtes de la réponse.

API de stockage hors-ligne

API base de données

La fonction openDatabaseSync() et les autres fonctions liées fournissent la possibilité d'accéder à un stockage local hors-ligne contenu dans une base de données SQL.

Ces bases de données sont spécifiques à chaque utilisateur et spécifiques au QML mais accessibles dans toutes les applications QML. Elles sont enregistrées dans le sous-dossier Databases de QDeclarativeEngine::offlineStoragePath(), actuellement en tant que bases de données SQLite.

L'API peut être utilisée à partir des fonctions JavaScript dans votre QML :

 import QtQuick 1.0
 
 Rectangle {
     color: "white"
     width: 200
     height: 100
 
     Text {
         text: "?"
         anchors.horizontalCenter: parent.horizontalCenter
         function findGreetings() {
             var db = openDatabaseSync("QDeclarativeExampleDB", "1.0", "The Example QML SQL!", 1000000);
 
             db.transaction(
                 function(tx) {
                     // Créer une base de données si elle n'existe pas déjà
                     tx.executeSql('CREATE TABLE IF NOT EXISTS Greeting(salutation TEXT, salutee TEXT)');
 
                     // Ajoute une (autre) ligne de salutations
                     tx.executeSql('INSERT INTO Greeting VALUES(?, ?)', [ 'hello', 'world' ]);
 
                     // Affiche toutes les salutations ajoutées
                     var rs = tx.executeSql('SELECT * FROM Greeting');
 
                     var r = ""
                     for(var i = 0; i < rs.rows.length; i++) {
                         r += rs.rows.item(i).salutation + ", " + rs.rows.item(i).salutee + "\n"
                     }
                     text = r
                 }
             )
         }
 
         Component.onCompleted: findGreetings()
     }
 }

L'API est conforme à la spécification '« Synchronous API » de la « HTML5 Web Database API », W3C Working Draft 29 October 2009.

L'exemple de stockage SQL local présente les bases de l'utilisation de l'API de stockage hors-ligne.

db = openDatabaseSync(identifier, version, description, estimated_size, callback(db))

Retourne la base de données identifiée par identifier. Si la base de données n'existe pas déjà, elle sera créée et la fonction callback sera appelée avec la base de données comme paramètre. Les propriétés description et estimated_size sont écrites dans le fichier INI (décrit ci-dessous), mais sont sinon actuellement inutilisés.

Cette fonction peut lancer les exceptions ayant pour code SQLException.DATABASE_ERR ou SQLException.VERSION_ERR.

Lorsqu'une base de données est créée, un fichier INI spécifiant ses caractéristiques est également créé :

Clé Valeur
Name Le nom de la base de données passée à openDatabase()
Version La version de la base de données passée à openDatabase()
Description La description de la base de données passée à openDatabase()
EstimatedSize La taille estimée de la base de données passée à openDatabase()
Driver Actuellement « QSQLITE »

Ces données peuvent être utilisées par des outils applicatifs.

db.changeVersion(from, to, callback(tx))

Cette méthode vous permet d'exécuter une mise à jour du schéma.

Si la version courante de la base de données de db n'est pas from, alors une exception est lancée.

Sinon, une transaction est créée et passée à callback. Dans cette fonction, vous pouvez appeler executeSql sur tx pour mettre à jour la base de données.

Cette fonction peut lancer les exceptions ayant pour code SQLException.DATABASE_ERR ou SQLException.UNKNOWN_ERR.

db.transaction(callback(tx))

Cette méthode crée une transaction de lecture/écriture, passée à callback. Dans cette fonction, vous pouvez appeler executeSql sur tx pour lire et modifier la base de données.

Si la fonction lance des exceptions, la transaction est annulée (aucun changement sur la base de données).

db.readTransaction(callback(tx))

Cette méthode crée une transaction en lecture seule, passée à callback. Dans cette fonction, vous pouvez appeler executeSql sur tx pour lire la base de données (avec des requêtes SELECT).

results = tx.executeSql(statement, values)

Cette méthode exécute une requête SQL statement, liant la liste de valeurs values aux paramètres SQL  »? ».

Elle retourne un objet résultat possédant les propriétés suivantes :

Type Propriété Valeur Applicabilité
int rows.length Le nombre de lignes dans le résultat SELECT
var rows.item(i) Fonction qui retourne la ligne i du résultat SELECT
int rowsAffected Le nombre de lignes affectées par la modification UPDATE, DELETE
string insertId L'identifiant de la ligne insérée INSERT

Cette fonction peut lancer les exceptions ayant pour code SQLException.DATABASE_ERR, SQLException.SYNTAX_ERR ou SQLException.UNKNOWN_ERR.

Logging

Les fonctions console.log() et console.debug() peuvent être utilisées pour afficher des informations dans la console. Voir déboguer QML pour plus d'informations.

Remerciements

Merci à Alexandre Laurent pour la traduction ainsi qu'à Ilya Diallo, Jonathan Courtois, Thibaut Cuvelier et Claude Leloup pour leur relecture !

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2020 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur, une redirection cassée ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -

Partenaire : Hébergement Web