Partage
  • Partager sur Facebook
  • Partager sur Twitter

décompte de widget

Sujet résolu
    20 septembre 2017 à 9:51:01

    Bonjour,

    J'ai créer une zone centrale pour une application a l'aide de QMdiArea. J'y insère un widget plusieurs fois et je voudrais savoir comment faire pour pouvoir décompter le nombre de widget que j'ai insérer. Le but est de limiter le nombre de widget à deux, pour l'instant j'ai créer un entier qui incrémente à chaque fois que je créer un widget et je me demandais si il n'y avait pas quelque chose de mieux à faire.

    Merci d'avance et bonne journée.

    Dimitri.

    • Partager sur Facebook
    • Partager sur Twitter
      20 septembre 2017 à 15:41:24

      Salut,

      Tu peux aussi placer les widgets dans une collection quelconque (mettons : std::vector ou QList), en gardant à l'esprit le fait que ce n'est pas cette collection qui a droit de vie et de mort sur tes widgets.

      De cette manière, tu "n'auras qu'à" demander la taille de la collection pour savoir... combien d'éléments se trouvent dedans ;)

      L'avantage, c'est que tu cette colletion te permettra d'accéder sans doute plus facilement aux différents widgets qu'elle contient

      • Partager sur Facebook
      • Partager sur Twitter
      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
        23 septembre 2017 à 21:07:44

        Je vais un peu plus loin, je dérive une classe de base de la subwidget, pour juste lui définir un comportement à adopter lorsque l'utilisateur ferme la fenêtre avec la croix, j'ai deux comportement possibles, le premier est le comportement normal, avant de détruire effectivement la fenêtre, j'active un signal que ma fenêtre principale va utiliser pour retirer la fenêtre en question de sa liste. Dans l'autre cas, je ne détruis pas la fenêtre, je me contente de simplement la cacher, donc visuellement elle n'existe plus mais dans les faits elle est toujours là, donc elle ne doit pas sortir de ma liste ;) . Cette surcharge me permet également de savoir si un exemplaire existe déjà et donc plutôt que d'en créer une nouvelle, resservir l'ancienne, ce qui me donne un petit gain en performance et me demande moins de ressources.

        -
        Edité par int21h 23 septembre 2017 à 21:21:52

        • Partager sur Facebook
        • Partager sur Twitter
        Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
          24 septembre 2017 à 10:59:35

          La liste des enfants d'un QObject est accessible via QObject::children. Ta MdiArea devrait contenir que tes widgets je pense, donc tu peux probablement ecrire :

          mdiArea->children().size()

          Pour avoir le nombre de widgets.

          (Par contre, si ta mdiArea contient d'autres QObject, il faudra creer une seconde liste, comme proposer par koala, ou compter directement dans la liste children() en filtrant que les QWidget)

          @int21h

          C'est plutot un comportement de la mdi area, donc c'est cette classe qu'il faudrait dériver a mon avis. Pas les subWindow.

          • Partager sur Facebook
          • Partager sur Twitter

          décompte de widget

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown