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

Qt Discussion :

Utiliser QPainter dans une grille


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut Utiliser QPainter dans une grille
    Bonjour,
    Je dessine des rectangle dans une grille, et je peux les déplacer avec la souris pour changer la position du rectangle. Mais le rectangle doit toujours contenir dans la grille, donc si je glisse le rectangle de gauche vers la droite, arrive à la fin de la grille, les parties du rectangle ne pouvant pas apparaitre dans la même ligne doit apparaitre à la ligne suivante. C'est a dire arrivé à la fin de la première ligne je peux faire apparaitre une partie de mon rectangle à la case 33 sur la figure jointe, et si je glisse encore ma souris ça continu à la case 34, jusqu'à ce qu'il apparait totalement à la deuxième ligne.
    Si quelqu'un a une idée pour m'aider svp.

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Membre émérite

    Profil pro
    Responsable logiciel
    Inscrit en
    Octobre 2010
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable logiciel

    Informations forums :
    Inscription : Octobre 2010
    Messages : 224
    Par défaut
    Si ton rectangle ne peut bouger que de gauche à droite, une idée (relativement) simple à implémenter serait d'avoir, en plus de la vue que tu présente, un curseur de commande de ton widget qui représenterait le widget en miniature affiché sur une seule ligne. La vue principale serait alors un zoom découpé en lignes du curseur de commande.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut
    Mon rectangle bouge dans tous les sens , sauf que dans ce cas de figure présenté, si je le bouge jusqu'à ce qu'il sort de la grille il doit être redessiné sur la ligne suivante.J'espère que je me suis bien fait comprendre.

    Merci pour ta réponse.

  4. #4
    Membre émérite

    Profil pro
    Responsable logiciel
    Inscrit en
    Octobre 2010
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable logiciel

    Informations forums :
    Inscription : Octobre 2010
    Messages : 224
    Par défaut
    Citation Envoyé par lisco Voir le message
    Mon rectangle bouge dans tous les sens , sauf que dans ce cas de figure présenté, si je le bouge jusqu'à ce qu'il sort de la grille il doit être redessiné sur la ligne suivante.J'espère que je me suis bien fait comprendre.

    Merci pour ta réponse.
    Dans ce cas, pas trop le choix, il faudrait gérer le débordement en masquant la partie extérieure du rectangle et en reportant la partie masquée sur la ligne suivante.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut
    C'est exactement ça. J'arrive à masquer la partie qui deborde mais j'arrive pas à le redessiner sur la ligne suivante. Sachant que que je bouge le rectangle les 2 parties doivent bouger comme en un seul rectangle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    void Maclass::dragMoveEvent(QDragMoveEvent *event)
    {
     
        QRect updateRect =rect1;
     
        if (event->mimeData()->hasFormat("image/x-exple-piece")
          {
            QRect recta = QRect(event->pos().x()/25*25, event->pos().y()/30 * 30,25, 30);
            QRect rectb = QRect(recta.x(), recta.y(), 25, 30);
            QRect rectc = QRect(rectb.x(), rectb.y(), 25, 30);
            rect1 = QRect(recta.x(), recta.y(), recta.width()+rectb.width()+rectc.width(), 30);
     
            if((event->pos().x()/25 * 25 + rect1.width()) > (800))//test du debordement.
            {
     
                rectd = QRect (0, (event->pos().y()+30)/30*30, 25, 30);//partie debordante su rla ligne suivant.
            }
     
            event->setDropAction(Qt::MoveAction);
            event->accept();
     
    }
    ensuite j'ai une méthode QPainter qui dessine mon rectangle.
    Tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    painter.drawRect(rect1);

  6. #6
    Membre émérite

    Profil pro
    Responsable logiciel
    Inscrit en
    Octobre 2010
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable logiciel

    Informations forums :
    Inscription : Octobre 2010
    Messages : 224
    Par défaut
    Je ne suis pas sûr que tu aies intérêt à faire le clipping dans la méthode dragMoveEvent, il devrait être possible de tout faire dans le paint (calcul du découpage et dessin). Ca serait plus propre et plus facile à analyser en cas de problème.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut
    merci!

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/12/2007, 10h58
  2. Utiliser ssh dans une application java
    Par Samanta dans le forum Sécurité
    Réponses: 12
    Dernier message: 28/02/2007, 16h30
  3. Réponses: 10
    Dernier message: 19/09/2005, 22h24
  4. utiliser mysql++ dans une classe
    Par Yevetrovitch dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 11/04/2005, 10h53
  5. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44

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