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 :

Erreur à la création de QLabel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut Erreur à la création de QLabel
    Bonjour,

    J'ai ce qu'il semble être une erreur d'allocation de mémoire, et je n'y connais encore rien sur la chose.
    Sans savoir si ce problème est en particulier dû à Qt ou au C++ en général, étant donné que c'est en utilisant Qt que je l'obtiens, je me permet de poster ici

    J'essaie donc de créer des QLabel, aucune erreur à la compilation mais lorsque je ferme le programme après son exécution, j'ai une erreur sur la mémoire :
    "Erreur d'application"
    "l'instruction à <"une adresse mémoire"> emploie l'adresse mémoire <"la même adresse mémoire">. La mémoire ne peut pas être "read" "
    J'ai donc tout mis en commentaire, et je me suis aperçu que c'était un groupe de QLabel qui posait problème (donc pas tous les QLabel que j'avais dans ma classe), J'ai alors changé et mis des QLineEdit à la place, pour vérifier... Et le groupe me posant problème s'est rétréci, mais le problème persiste...

    Ai-je un problème de mémoire "sur le tas" ? (je précise que je n'effectue que des "new" pour créer mes QLabel/QLineEdit...)

    j'ai vu sur la FAC C++, qu'il y avait différente manière d'allouer plus de mémoire à son programme, est-ce là ce qu'il me faut ?
    Ou le problème vient de mon utilisation de Qt et peut être réglé avec ?

    EDIT : j'ai peut être pas placé le sujet au bon endroit pas contre :-/

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    et si mettait un peu de code???

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut
    Tout de suite,

    Voici le .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
    #ifndef FICHECOMPTAPRO_H
    #define FICHECOMPTAPRO_H
     
    #include <QWidget> // inheriting class's header file
    #include <QtGui>
     
     
    class FicheComptaPro : public QWidget
    {
    	public:
    		FicheComptaPro();
     
    	private:
            void initTableau();
            void initWidget();
     
            QLabel *titre;
            QLabel *LABELcodeP;
            QLineEdit *codeP;
            QPushButton *rechercherButton;
            QLabel *label_3;
            QComboBox *choixTrimestre;
            QLineEdit *choixAnnee;
            QTableWidget *tableWidget;
     
            QLineEdit *mois1;
            QLineEdit *mois2;
            QLineEdit *mois3;
            QLineEdit *locataire1;
            QLineEdit *locataire2;
            QLineEdit *locataire3;
            QLineEdit *loyer1;
            QLineEdit *loyer2;
            QLineEdit *loyer3;
            QLineEdit *provCharges1;
            QLineEdit *provCharges2;
            QLineEdit *provCharges3;
            QLineEdit *regul1;
            QLineEdit *regul2;
            QLineEdit *regul3;
            QLineEdit *total1;
            QLineEdit *total2;
            QLineEdit *total3;
            QLineEdit *totalLoyer;
            QLineEdit *totalProvCharges;
            QLineEdit *totalRegul;
            QLineEdit *totalMax;
     
     
    };
     
    #endif // FICHECOMPTAPRO_H
    Et le .cpp
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    FicheComptaPro::FicheComptaPro()
    {
    	resize(737, 637);
     
        initTableau();
        initWidget();
     
    }
     
     
    void FicheComptaPro::initTableau()
    {
        tableWidget = new QTableWidget(this);
     
        if (tableWidget->columnCount() < 6)
            tableWidget->setColumnCount(6);
        QTableWidgetItem *__colItem = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(0, __colItem);
        QTableWidgetItem *__colItem1 = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(1, __colItem1);
        QTableWidgetItem *__colItem2 = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(2, __colItem2);
        QTableWidgetItem *__colItem3 = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(3, __colItem3);
        QTableWidgetItem *__colItem4 = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(4, __colItem4);
        QTableWidgetItem *__colItem5 = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(5, __colItem5);
     
        tableWidget->horizontalHeaderItem(0)->setText("Mois");
        tableWidget->horizontalHeaderItem(1)->setText("Locataire");
        tableWidget->horizontalHeaderItem(2)->setText("Loyer");
        tableWidget->horizontalHeaderItem(3)->setText("Prov. Charges");
        tableWidget->horizontalHeaderItem(4)->setText("Régul.");
        tableWidget->horizontalHeaderItem(5)->setText("Total");
     
        if (tableWidget->rowCount() < 4)
            tableWidget->setRowCount(4);
        QTableWidgetItem *__rowItem = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(0, __rowItem);
        QTableWidgetItem *__rowItem1 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(1, __rowItem1);
        QTableWidgetItem *__rowItem2 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(2, __rowItem2);
        QTableWidgetItem *__rowItem3 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(3, __rowItem3);
     
        tableWidget->verticalHeaderItem(0)->setText("");
        tableWidget->verticalHeaderItem(1)->setText("");
        tableWidget->verticalHeaderItem(2)->setText("");
        tableWidget->verticalHeaderItem(3)->setText("");
     
     
        tableWidget->setGeometry(QRect(30, 190, 610, 144));
        tableWidget->setRowCount(4);
        tableWidget->setColumnCount(6);
     
        tableWidget->setSpan(3, 0, 0, 2);
        QLabel *hide = new QLabel("<h2>Totaux</h2>", this);
           hide->setAlignment(Qt::AlignRight);
        tableWidget->setCellWidget(3, 0, hide);   
    }
     
    void FicheComptaPro::initWidget()
    {
        titre = new QLabel("<h1>Comptabilité Propriétaire</h1>", this);
           titre->setGeometry(0, 0, 741, 81);
           titre->setAlignment(Qt::AlignCenter);
        LABELcodeP = new QLabel("Code Proprio :", this);
           LABELcodeP->setGeometry(20, 100, 71, 21);
        codeP = new QLineEdit(this);;
           codeP->setGeometry(90, 100, 51, 21);
           codeP->setAlignment(Qt::AlignRight);
        rechercherButton = new QPushButton("rechercher", this);
           rechercherButton->setGeometry(480, 150, 75, 21);
        label_3 = new QLabel("DECOMPTE DES LOYERS ET CHARGES DU", this);
           label_3->setGeometry(50, 150, 201, 21);
        choixTrimestre = new QComboBox(this);
           choixTrimestre->setGeometry(250, 150, 141, 21);
           choixTrimestre->addItem(tr("PREMIER TRIMESTRE"));
           choixTrimestre->addItem(tr("DEUXIEME TRIMESTRE"));
           choixTrimestre->addItem(tr("TROISIEME TRIMESTRE"));
           choixTrimestre->addItem(tr("QUATRIEME TRIMESTRE"));
        choixAnnee = new QLineEdit("2008", this);
           choixAnnee->setGeometry(400, 150, 31, 21);
           choixAnnee->setAlignment(Qt::AlignRight);
     
     
    //    mois1 = new QLineEdit("Janvier", this);
    //       mois1->setAlignment(Qt::AlignCenter);
    //    mois2 = new QLineEdit("Février", this);
    //       mois2->setAlignment(Qt::AlignCenter);
    //    mois3 = new QLineEdit("Mars", this);
    //       mois3->setAlignment(Qt::AlignCenter);
    //    locataire1 = new QLineEdit(this);
    //    locataire2 = new QLineEdit(this);
    //    locataire3 = new QLineEdit(this);
    //    loyer1 = new QLineEdit(this);
    //       loyer1->setAlignment(Qt::AlignRight);
    //    loyer2 = new QLineEdit(this);
    //       loyer2->setAlignment(Qt::AlignRight);
    //    loyer3 = new QLineEdit(this);
    //       loyer3->setAlignment(Qt::AlignRight);
    //    provCharges1 = new QLineEdit(this);
    //       provCharges1->setAlignment(Qt::AlignRight);
    //    provCharges2 = new QLineEdit(this);
    //       provCharges2->setAlignment(Qt::AlignRight);
    //    provCharges3 = new QLineEdit(this);
    //       provCharges3->setAlignment(Qt::AlignRight);
    //    regul1 = new QLineEdit(this);
    //       regul1->setAlignment(Qt::AlignRight);
    //    regul2 = new QLineEdit(this);
    //       regul2->setAlignment(Qt::AlignRight);
    //    regul3 = new QLineEdit(this);
    //       regul3->setAlignment(Qt::AlignRight);
    //    total1 = new QLineEdit(this);
    //       total1->setAlignment(Qt::AlignRight);
    //    total2 = new QLineEdit(this);
    //       total2->setAlignment(Qt::AlignRight);
    //    total3 = new QLineEdit(this);
    //       total3->setAlignment(Qt::AlignRight);
    //    totalLoyer = new QLineEdit(this);
    //       totalLoyer->setAlignment(Qt::AlignRight);
    //    totalProvCharges = new QLineEdit(this);
    //       totalProvCharges->setAlignment(Qt::AlignRight);
    //    totalRegul = new QLineEdit(this);
    //       totalRegul->setAlignment(Qt::AlignRight);
    //    
    //    totalMax = new QLineEdit(this);
    //       totalMax->setAlignment(Qt::AlignRight);            
     
    //    tableWidget->setCellWidget(0,0,mois1);
    //    tableWidget->setCellWidget(1,0,mois2);
    //    tableWidget->setCellWidget(2,0,mois3);
    //    tableWidget->setCellWidget(0,1,locataire1);
    //    tableWidget->setCellWidget(1,1,locataire2);
    //    tableWidget->setCellWidget(2,1,locataire3);
    //    tableWidget->setCellWidget(0,2,loyer1);
    //    tableWidget->setCellWidget(1,2,loyer2);
    //    tableWidget->setCellWidget(2,2,loyer3);
    //    tableWidget->setCellWidget(3,2,totalLoyer);
    //    tableWidget->setCellWidget(0,3,provCharges1);
    //    tableWidget->setCellWidget(1,3,provCharges2);
    //    tableWidget->setCellWidget(2,3,provCharges3);
    //    tableWidget->setCellWidget(3,3,totalProvCharges);
    //    tableWidget->setCellWidget(0,4,regul1);
    //    tableWidget->setCellWidget(1,4,regul2);
    //    tableWidget->setCellWidget(2,4,regul3);
    //    tableWidget->setCellWidget(3,4,totalRegul);
    //    tableWidget->setCellWidget(0,5,total1);
    //    tableWidget->setCellWidget(1,5,total2);
    //    tableWidget->setCellWidget(2,5,total3);
    //    tableWidget->setCellWidget(3,5,totalMax);
    }
    Les lignes entre commentaire sont les déclarations qui me posent problème, ici les QLabel ont été remplacés par des QLineEdit mais le problème reste le même...

    Merci d'avance !

    EDIT: j'ajoute quand même me main.cpp :
    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
     
    #include <QApplication>
    #include <QtDebug>
    #include "FenetrePrinc.h"
    #include "FicheComptaPro.h"
    #include "OpenFiche.h"
     
     
     
    int main(int argc, char *argv[])
    {
         Q_INIT_RESOURCE(application); 
     
         QApplication app(argc, argv);
     
    //     FenetrePrinc *fenetrePrincipale = new FenetrePrinc;
    //     fenetrePrincipale->show();
     
    //     FicheComptaLoc *fiche = new FicheComptaLoc;
    //     fiche->show();
     
           FicheComptaPro *fiche2 = new FicheComptaPro;
           fiche2->show();
     
     
         return app.exec();
    }

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Tu devrait un peu plus structurer ton code et utiliser quelque regle de programmation.... Il n'est pas très lisible

    as tu essayé de commenter une après l'autre les ligne stableWidget->setCellWidget ?

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut
    Sans avoir plus de connaissance sur le sujet, ça ressemble bien à un problème d'allocation sur la mémoire,

    Je viens d'enlever mon #include "fenetreprinc.h" dans mon main.cpp, et ça passe très bien...

    Cette classe contient toute les autres classe en #include, donc je suppose que ça fait bcp de QLabel, QLineEdit au total.
    Comment gerer ça donc ?
    Car je vais avoir besoin de tout ce que j'ai fais jusqu'à présent.

    Merci d'avance !

    EDIT : Pour te répondre, Mongaulois, je n'ai pas eu besoin de les commenter ces lignes, car c'est à la construction de mes QLabel/QLineEdit, que j'ai le problème et c'est sur ça que j'ai joué. Sur les new donc

    Pour la structure de mon code, je l'ai faite vraiment à la va-vite car je voulais avancer, et j'ai fais aussi quelques copier/coller du code généré par QtDesigner

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    tu as essaye un debugger pour voir ou il plante??

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut
    Je n'ai pas essayé de debugger non, mais je sais qu'il plante à la fermeture.

    Je vais voir ce que je peux faire, mais je ne sais pas trop débugger moi, ce que je fais d'habitude et d'ajouter de qDebug() à certains endroits clés pour voir si le programme y passe (en incluant CONFIG += console à mon .PRO).

    Faut-il que je compile le débug ? (je l'avais fais pour Qt 4.3, mais je suis passé au 4.4 et je ne l'ai pas refais car je ne m'en servais pas du coup)

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

Discussions similaires

  1. erreur à la création d'objet
    Par mencaglia dans le forum C++
    Réponses: 4
    Dernier message: 14/03/2006, 11h24
  2. [Sessions] Message erreur PHP création de session
    Par Ylias dans le forum Langage
    Réponses: 2
    Dernier message: 29/09/2005, 11h11
  3. Réponses: 26
    Dernier message: 27/04/2005, 11h29
  4. Réponses: 3
    Dernier message: 12/11/2003, 15h57

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