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 :

Problème de QVector

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 49
    Par défaut Problème de QVector
    Bonsoir,

    j'ai un problème avec un QVector< QVector<int> > voici mon code qui produit l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void Map::setSource(QVector< QVector<int> > src)
    {
        source.resize(src.size());
    }
    (source est un membre de Map)
    Le problème c'est que j'ai une erreur de segmentation sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source.resize(src.size());
    et je ne comprend pas pourquoi, si quelqu'un sait aidez moi!

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Quel est la valeur de src.size() (maximum) ?

    _ _ _ _ _ _ _ _ _ _ _ _ _ _
    http://qt.developpez.com/doc/4.6/qvector/
    http://qt.developpez.com/doc/4.6/qvector/#resize

  3. #3
    Inactif  


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

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour Mujin

    Il va nous falloir un peu plus de code parce que là, il n'y a pas de problème avec ton code à priori. Il est probable que le problème soit ailleurs mais n'apparaisse que là.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 49
    Par défaut
    Bonjour,

    je vais mettre toutes les utilisation de la variable source:
    dans le constructeur de Map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        source.resize(1);
        source[0].resize(1);
        source[0][0] = 0;
    dans Map::mousePressEvent(QMouseEvent *event) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map[coucheActuelle][posCurseur.x()/32+w][posCurseur.y()/32+h] = source.at(w).at(h);
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    void Map::mouseReleaseEvent(QMouseEvent *event)
    {
        if(event->pos().x()<0 || event->pos().y()<0)
            return;
     
        if(event->button() == Qt::LeftButton)
        {
            leftMousePressed = false;
        }
     
        if(event->button() == Qt::RightButton)
        {
            rightMousePressed = false;
     
            posCurseur = event->pos();
     
            int width = (posCurseur.x()-posCurseur.x()%32) - (posAncienCurseur.x()-posAncienCurseur.x()%32);
            int height = (posCurseur.y()-posCurseur.y()%32) - (posAncienCurseur.y()-posAncienCurseur.y()%32);
            if(width < 0)
            {
                width -= 32;
                posCurseur.setX(event->x()-event->x()%32);
                tailleCurseur.setWidth(-width);
                source.resize(-width/32);
            }
            else
            {
                width += 32;
                posCurseur.setX(posAncienCurseur.x());
                tailleCurseur.setWidth(width);
                source.resize(width/32);
            }
     
            if(height < 0)
            {
                height -= 32;
                posCurseur.setY(event->y()-event->y()%32);
                tailleCurseur.setHeight(-height);
                for(int x=0 ; x<source.size() ; x++)
                    source[x].resize(-height/32);
            }
            else
            {
                height += 32;
                posCurseur.setY(posAncienCurseur.y());
                tailleCurseur.setHeight(height);
                for(int x=0 ; x<source.size() ; x++)
                    source[x].resize(height/32);
            }
            for(int x=0 ; x<source.size() ; x++)
            {
                for(int y=0 ; y<source.at(x).size() ; y++)
                {
                    source[x][y] = map.at(coucheActuelle).at((posCurseur.x()-posCurseur.x()%32)/32 + x).at(
                            (posCurseur.y()-posCurseur.y()%32)/32 + y);
                }
            }
        }
     
        QLabel::mouseReleaseEvent(event);
    }
    dans QMouseMoventEvent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map[coucheActuelle][posCurseur.x()/32+w][posCurseur.y()/32+h] = source.at(w).at(h);
    et aussi ce que j'envoi à setSource c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QVector< QVector<int> > source;
    d'une autre classe

    j'espère que ça suffira sinon je donnerai le lien de mon projet

  5. #5
    Inactif  


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

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Je n'ai pas vu ce qui pourrait faire planter le code. As tu executer en mode pas à pas, pour voir les valeurs des resize et que tes boucles for ne tournent pas à l'infini ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 49
    Par défaut
    J'ai fini par résoudre le problème,
    j'essayais d'accéder a une variable (Map) qui avait été supprimé, c'est pour ça que ça n'allait pas. Erreur d'inattention... Merci de votre attention.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec QVector
    Par Guillaume63 dans le forum Débuter
    Réponses: 6
    Dernier message: 15/04/2011, 20h24
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  3. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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