IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

[Qt 4.7.2] Gros fichiers (plus de 100 000 lignes) dans un QTextEdit

  1. #1
    Membre du Club Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : janvier 2006
    Messages : 143
    Points : 52
    Points
    52
    Par défaut [Qt 4.7.2] Gros fichiers (plus de 100 000 lignes) dans un QTextEdit
    Bonjour à tous,

    Quelle serait selon vous la meilleur approche pour charger une grosse quantité de texte (de 100 000 à 1 000 000 lignes) dans un QTextEdit (ou un autre composant, si il en existe un de plus adapté).
    Après quelques recherches sur le net, j'ai constaté que cette question revient assez souvent, mais je n'ai pas encore trouvé de réponse satisfaisante (dans la doc QT non plus d'ailleurs).

    Si vous vous demandez l'utilité de la démarche, le but est de pouvoir naviguer dans le contenu d'un "gros" log, comme on le ferait via un simple éditeur de texte. L'intérêt du projet réside dans la possibilité d'appliquer des filtres ou des couleurs en fonction du niveau de trace (propre à une ligne), ce que ne permet pas un éditeur de texte lambda.

    Actuellement j'utilise notepad++ pour visualiser ces logs, qu'il arrive à charger dans un temps très correct. Il semblerait qu'il charge tout le contenu dans la zone de texte, ma première approche a donc été de charger tout le contenu (via un setText) du log dans le QTextEdit. Cependant, avec un contenu de plus de 10 000 lignes, le temps de chargement commence déjà à être fastidieux sur une bonne machine et je ne parle même pas du cas de 100 000 (10 Mo) voir 1 000 000 de lignes.

    Ma seconde approche, consiste à utiliser un système de fenêtrage. Autrement dit, je me contente de charger une centaine de ligne du contenu total dans le QTextEdit et je mets ce contenu à jour dynamiquement en fonction du scroll, le contenu total étant uniquement stocké en mémoire.

    Le problème réside dans la gestion de la scrollbar, qui ne refléte pas la taille complète du document, car elle s'adapte au contenu "réel" du QTextEdit, c'est à dire la centaine de lignes contenues dans le QTextEdit et non les 100 000 ou plus. J'ai beau modifier le range de la scrollbar, visuellement, elle s'adapte toujours au contenu effectif.

    Voilà pour mes approches personnelles, si quelqu'un a une idée qui pourrait me mettre sur la piste, je suis preneur. D'avance merci.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    5 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2008
    Messages : 5 295
    Points : 15 633
    Points
    15 633
    Par défaut
    Bonjour MPKA

    Premier problème : tu vas avoir un temps de chargement du document relativement long, ce qui va bloquer ton application. Solution : transférer le chargement du document dans un thread dédié.

    Second problème : le document en mémoire. Ce n'est pas un réel problème, même un document de plusieurs centaines de Mo tiens en mémoire vive. Par contre, utilise QTextDocument pour stocker le texte (plutôt que QString) et QTextEdit pour l'affichage. cf doc.

    Bon courage

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2014, 13h38
  2. [XL-2013] Créer un graphique à partir d'une table de plus de 100 000 lignes
    Par ClemQ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/06/2014, 12h11
  3. Réponses: 1
    Dernier message: 16/09/2007, 14h14
  4. gestion de BDD (de plus de 200 000 lignes)
    Par jackfred dans le forum Excel
    Réponses: 3
    Dernier message: 20/04/2007, 11h04
  5. Utiliser plus de 100 critères OR dans une requête
    Par fanfoicyp dans le forum Access
    Réponses: 9
    Dernier message: 23/05/2006, 22h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo