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 :

comment creer un tableau de type QRectF


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 42
    Par défaut comment creer un tableau de type QRectF
    salut
    j'ai entré ce code mais il y a des erreurs

    Code:
    void MaFenetre::afficherDisques() {
    QRectF disque[10];
    for(int j=0;j<10;j++)
    {
    disque[j] (50+10*j,480-20*j,300-20*j,20);
    }
    }

    j'ai fais QRectF disque() et ça marche
    mais comment faire car je veux 10 disques .
    merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Salut, et bienvenue sur le forum,

    Euh déjà, tu peux utiliser la balise [Code] pour y mettre ton code. C'est l'icône # située à droite de la barre d'outils quand tu écris une réponse.

    Sinon, concernant ton problème, je ne suis pas sûr qu'il soit très judicieux d'utiliser un tableau [] (bienvenue dans la POO ).

    je verrais plutôt un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    QRectF* monRect;
    QList<QRectF*> rectList;
     
    for(int i=0;i<10;i++)
    {
    monRect = new QRectF(a,b,c,d);
    rectList.append(monRect);
    }
    Pour accéder à tes rectangles, tu n'as plus qu'à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monRect = rectList.at(x); // où x est la position dans la liste (0 à 9 dans notre cas)
    Bonne chance,

    G.

  3. #3
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Suis plutôt la méthode Gulish, à l'exception de ne pas stocker des QRectF*, mais des QRectF tout court (QList utilise déjà des pointeurs pour stocker les copies, ça fait donc double emploi et double indirection lorsque tu en as besoin, sans compter qu'il te faudrait en sus gérer toi même la durée de vie de l'objet).

    Le pourquoi ça marche pas avec ton code est simplement que les objets sont déjà construits. Il ne faut donc pas appeller le constructeur puisque ce n'est pas une fonction, mais utiliser les fonctions de QRectF pour l'initialiser.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    à l'exception de ne pas stocker des QRectF*, mais des QRectF tout court (QList utilise déjà des pointeurs pour stocker les copies, ça fait donc double emploi et double indirection ...).
    Es tu sûr ? Dans la doc de QList est écrit cela :
    Internally, QList<T> is represented as an array of pointers to items. (Exceptionally, if T is itself a pointer type or a basic type that is no larger than a pointer, or if T is one of Qt's shared classes, then QList<T> stores the items directly in the pointer array.)
    Si j'ai bien compris ce paragraphe, finalement ça revient au même. De plus, un peu plus loin, on peut lire :
    Note, however, that for unshared list items that are larger than a pointer, each append or insert of a new item requires allocating the new item on the heap, and this per item allocation might make QVector a better choice in cases that do lots of appending or inserting, since QVector allocates memory for its items in a single heap allocation
    Enfin bref, je chipote , mais tout ça pour justifier mon choix de faire des listes de pointeurs. Ca revient au même.

    G.

  5. #5
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Oui, je suis sûr, et si tu relis plus attentivement, tu verras que c'est ce que je dis

    * QRectF est plus gros qu'un pointeur
    * QRectF n'utilise pas le partage de données (et quand bien même il l'utiliserait à ce moment là, le stockage d'un pointeur reste inutile et apporte tout de même une indirection)
    * QRectF n'est pas un POD

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    * QRectF est plus gros qu'un pointeur
    * QRectF n'utilise pas le partage de données (et quand bien même il l'utiliserait à ce moment là, le stockage d'un pointeur reste inutile et apporte tout de même une indirection)
    * QRectF n'est pas un POD
    Deja, dans ta réponse, je ne sais pas si tes étoiles sont des tirets, ou représentent de pointeurs de QRectF.

    Dans tous les cas, peux tu m'expliquer pourquoi un pointeur de QRectf (QRectF*) est plus gros qu'un pointeur ? Un pointeur n'est t'il pas justement supposé faire toujours la même taille, puisqu'il n'est qu'une adresse mémoire?

    G.

Discussions similaires

  1. Comment creer un tableau sur VB2005 ?
    Par fefe69 dans le forum VB.NET
    Réponses: 9
    Dernier message: 16/03/2008, 21h09
  2. [TP] Comment créer un tableau
    Par amine6441 dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 29/11/2006, 13h48
  3. [2.0][C#] Comment créer un tableau indicé
    Par LE NEINDRE dans le forum C#
    Réponses: 3
    Dernier message: 13/11/2006, 16h38
  4. comment creer un tableau de variables
    Par jafo65 dans le forum C
    Réponses: 13
    Dernier message: 28/04/2006, 14h03
  5. comment creer un tableau "stable"
    Par gaut dans le forum C
    Réponses: 16
    Dernier message: 23/07/2003, 16h20

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