QCacheLa classe QCache est un modèle qui fournit un cache. Plus d'informations... #include <QCache> Description détailléeLa classe QCache est un modèle qui fournit un cache. QCache<Cle, T> définit un cache qui stocke des objets de type T, associés à des clés de type Cle. Par exemple, voici la définition d'un cache qui stocke des objets de type Employe, associés à une clé entière. QCache<int, Employe> cache; Voici la manière d'insérer un objet dans le cache. Employe *employe = new Employe; employe->setId(37); employe->setName("Richard Schmit"); ... cache.insert(employe->id(), employe); L'avantage de l'utilisation de cette classe par rapport aux structures basées sur des clés (comme QMap ou QHash) est que QCache prend possession automatiquement des objets qui y sont insérés et les supprime pour faire de la place, si nécessaire. À l'insertion d'un objet dans le cache, vous pouvez spécifier un coût, ce qui devrait avoir un lien avec la quantité de mémoire utilisée par l'objet. Quand la somme des coûts de tous les objets (totalCost()) excède la limite du cache (maxCost()), QCache commence à supprimer des objets dans le cache pour rester en dessous de la limite, en commençant par les objets les moins utilisés. Par défaut, maxCost() vaut 100. Vous pouvez spécifier une valeur différente dans le constructeur. QCache<int, MyDataStructure> cache(5000); À chaque appel de insert(), vous pouvez spécifier un coût en troisième argument (après la clé et un pointeur vers l'objet à insérer). Après l'appel, l'objet inséré appartiendra à QCache, qui pourra le supprimer à tout moment. Pour regarder les objets dans le cache, utilisez object() ou operator[](). Cette fonction permet de retrouver un objet par sa clé et retourne, soit un pointeur vers l'objet en cache (détenu par lui) soit 0. Si vous voulez supprimer un objet du cache, appelez remove(). Ceci supprimera aussi l'objet. Si vous voulez supprimer un objet du cache sans qu'il soit supprimé, appelez take(). Voir aussi QPixmapCache, QHash et QMap. Fonctions membresQCache::QCache ( int maxCost = 100 )Construit un cache dont le contenu ne dépassera jamais un coût plus grand que maxCost. QCache::~QCache ()Détruit le cache, ainsi que tous les objets du cache. void QCache::clear ()Supprime tous les objets dans le cache. Voir aussi remove() et take(). bool QCache::contains ( const Key & key ) constRetourne true si le cache contient un objet associé avec la clé key ; sinon, retourne false. Voir aussi take() et remove(). int QCache::count () constComme size(). bool QCache::insert ( const Key & key, T * object, int cost= 1 )Insère object dans le cache avec la clé key et le coût cost. Tout objet ayant la même clé dans le cache sera supprimé. Après cet appel, object est propriété de QCache et peut être supprimé à n'importe quel moment. En particulier, si cost est supérieur à maxCost(), l'objet sera supprimé immédiatement. Cette fonction retourne true si l'objet a été inséré dans le cache, sinon elle retourne false. Voir aussi take() et remove(). isEmptybool QCache::isEmpty () const Retourne true si le cache ne contient aucun objet, false sinon. Voir aussi size(). QList<Key> QCache::keys () constRetourne une liste des clés du cache. int QCache::maxCost () constRetourne le coût maximal autorisé dans le cache. Voir aussi setMaxCost() et totalCost(). T * QCache::object ( const Key & key) constRetourne l'objet associé à la clé key ou 0 si la clé n'existe pas dans le cache. Attention : L'objet retourné est possédé par QCache et peut être supprimé à n'importe quel moment. Voir aussi take() et remove(). bool QCache::remove ( const Key & key)Supprime l'objet associé à la clé key. Retourne true si l'objet a été trouvé dans le cache ; sinon, false. void QCache::setMaxCost ( int cost)Autorise un coût maximal de cost. Si le coût total actuel est plus grand que cost nouvellement autorisé, des objets seront supprimés automatiquement. Voir aussi maxCost() et totalCost(). int QCache::size () constRetourne le nombre d'objets dans le cache. Voir aussi isEmpty(). T * QCache::take ( const Key & key)Prend l'objet associé à la clé key hors du cache sans le supprimer. Retourne un pointeur vers cet objet ou 0 si la clé n'existe pas dans le cache. La propriété de l'objet retourné est passée à l'appelant. Voir aussi remove(). int QCache::totalCost () constRetourne le coût total des objets dans le cache. Cette valeur est normalement inférieure à maxCost(), mais QCache fait une exception pour les classes implicitement partagées de Qt. Si un objet caché partage ses données internes avec une autre instance, QCache peut garder l'objet, en rendant possiblement totalCost() plus grand que maxCost(). Voir aussi setMaxCost(). T * QCache::operator[] ( const Key & key) constRetourne un objet associé à la clé key ou 0 si la clé n'existe pas dans le cache. Ceci équivaut à object(). Attention : L'objet retourné est possédé par QCache et peut être supprimé à tout moment. RemerciementsMerci à Thibaut Cuvelier pour la traduction et à Jacques Thery pour la relecture ! |
Publicité
Best OfActualités les plus luesSemaine
Mois
Année
Le blog Digia au hasardCréer des applications avec un style Metro avec Qt, exemples en QML et C++, un article de Digia Qt traduit par Thibaut CuvelierLe blog Digia est l'endroit privilégié pour la communication sur l'édition commerciale de Qt, où des réponses publiques sont apportées aux questions les plus posées au support. Lire l'article.
CommunautéRessources
Liens utilesContact
Qt dans le magazine |
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.6 | |
Copyright © 2012 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 ? Un bug ? 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 ! |
Copyright © 2000-2012 - www.developpez.com