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 :

Passage de valeur d'un objet à un autre par un slot

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut Passage de valeur d'un objet à un autre par un slot
    bonjour à tous, j'ai un vrai problème de débutant. Désirant avoir un code bien découpé, j'ai un un fichier (h et cpp) pour l'interface et un fichier pour tout ce qui concerne les calculs. Je désire en effet faire un petit logiciel de calcul de beton. Or, je n'arrive pas à faire transférer des données lu par l'intermédiaire du fichier de l'interface vers une variable situé dans l'autre fichier. bref, j'ai beau avoir créer un nouvel objet, il refuse d'assigner la valeur à la varibale demandée.

    interface: probleme ligne 122: a function-definition is not allowed here


    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
     
    #include "MaFenetre.h"
    #include "Beton.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
     
     
     
        // Construction du bouton
        m_hauteur = new QDoubleSpinBox(this);
        m_largeur = new QDoubleSpinBox(this);
        m_enrobage = new QDoubleSpinBox(this);
     
        QLabel *hauteur = new QLabel("hauteur");
        QLabel *largeur = new QLabel("largeur");
        QLabel *enrobage = new QLabel("enrobage");
     
        QLabel *hauteurcm = new QLabel("cm");
        QLabel *largeurcm = new QLabel("cm");
        QLabel *enrobagecm = new QLabel("cm");
     
     
     
     
    //Geometrie
        QGridLayout *geometrie = new QGridLayout;
     
        geometrie->addWidget(hauteur,2,0);
        geometrie->addWidget(largeur,1,0);
        geometrie->addWidget(enrobage,0,0);
     
        geometrie->addWidget(hauteurcm,2,2);
        geometrie->addWidget(largeurcm,1,2);
        geometrie->addWidget(enrobagecm,0,2);
     
     
        geometrie->addWidget(m_enrobage,0,1);
        geometrie->addWidget(m_largeur,1,1);
        geometrie->addWidget(m_hauteur,2,1);
     
        QGroupBox *groupGeom = new QGroupBox ("Géométrie et caractéristiques");
        groupGeom->setLayout(geometrie);
     
     
    //action
     
        m_moment = new QDoubleSpinBox(this);
        m_tranchant = new QDoubleSpinBox(this);
        QLabel *moment = new QLabel("moment");
        QLabel *tranchant = new QLabel("Effort tranchant");
        QLabel *tranchantkN = new QLabel("kN");
        QLabel *momentkNm = new QLabel("kNm");
     
     
     
        QGridLayout *action = new QGridLayout;
        action->addWidget(moment,0,0);
        action->addWidget(tranchant,1,0);
     
        action->addWidget(momentkNm,0,2);
        action->addWidget(tranchantkN,1,2);
     
     
        action->addWidget(m_moment,0,1);
        action->addWidget(m_tranchant,1,1);
     
     
        QGroupBox *groupAction = new QGroupBox ("Actions");
        groupAction->setLayout(action);
     
    //bouton clacul
     
        m_calculBeton = new QPushButton("calcul");
     
    //Résultat
     
        m_As = new QLineEdit(this);
        m_Ass = new QLineEdit(this);
        m_Asw = new QLineEdit(this);
        QLabel *As = new QLabel("As");
        QLabel *Ass = new QLabel("As'");
        QLabel *Asw = new QLabel("Asw");
        QLabel *ascm2 = new QLabel("cm²");
        QLabel *asscm2 = new QLabel("cm²");
        QLabel *aswcm2 = new QLabel("cm²");
     
     
        QGridLayout *resultat = new QGridLayout;
        resultat->addWidget(As,0,0);
        resultat->addWidget(Ass,1,0);
        resultat->addWidget(Asw,2,0);
     
        resultat->addWidget(ascm2,0,2);
        resultat->addWidget(asscm2,1,2);
        resultat->addWidget(aswcm2,2,2);
     
        resultat->addWidget(m_As,0,1);
        resultat->addWidget(m_Ass,1,1);
        resultat->addWidget(m_Asw,2,1);
     
     
        QGroupBox *groupResultat = new QGroupBox ("Résultat");
        groupResultat->setLayout(resultat);
     
     
    //Principal
        QVBoxLayout *layoutPrincipal = new QVBoxLayout;
        layoutPrincipal->addWidget(groupGeom);
        layoutPrincipal->addWidget(groupAction);
        layoutPrincipal->addWidget(m_calculBeton);
        layoutPrincipal->addWidget(groupResultat);
     
     
     
        setLayout(layoutPrincipal);
     
    // implementation slot
     
        Beton poutre; // nouvelle objet
     
    void MaFenetre::calculBeton(double h)
    {
        poutre.hauteur=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
     
     
    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE
     
    #include <QApplication>
    #include <QWidget>
    #include <QDoubleSpinBox>
    #include <QGroupBox>
    #include <QVBoxLayout>
    #include <QGridLayout>
    #include <QLabel>
    #include <QLineEdit>
    #include <QPushButton>
     
     
    class MaFenetre : public QWidget // On hérite de QWidget (IMPORTANT)
    {
     
        // Les signaux
     
    Q_OBJECT
     
        public:
        MaFenetre();
     
        //les signaux
     
        public slots:
        void calculBeton(double h);
     
        // le reste
     
        private:
        QDoubleSpinBox *m_hauteur;
        QDoubleSpinBox *m_largeur;
        QDoubleSpinBox *m_enrobage;
     
        QDoubleSpinBox *m_moment;
        QDoubleSpinBox *m_tranchant;
     
        QLineEdit *m_As;
        QLineEdit *m_Ass;
        QLineEdit *m_Asw;
     
        QPushButton *m_calculBeton;
     
     
    };
     
    #endif


    la class Beton

    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
    #ifndef BETON_H_INCLUDED
    #define BETON_H_INCLUDED
     
    class Beton
    {
    public:
    Beton();
     
    double hauteur;
     
    private:
     
    };
     
     
     
    #endif // BETON_H_INCLUDED
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "Beton.h"
     
    using namespace std;
     
    Beton::Beton()
    {
     
    }
    En vous remerciant d'avance :S

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Il manque l'accolade fermante de ton constructeur.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    de quel constructeur? je ne vois pas d'accolade manquante?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Celui de MaFenetre.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    non il y est, mais le copier coller de mon code c'est arrêté une ligne avant la fin.

    j'ai remis à jour

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Ok.

    Par contre je ne saisis pas ton problème mais j'ai remarqué quelque chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        setLayout(layoutPrincipal);
    }
    // implementation slot
        Beton poutre; // nouvelle objet // Je pense qu'il serait mieux de mettre cette ligne dans la définition de la classe.
     
    void MaFenetre::calculBeton(double h)
    {
        poutre.hauteur=h;
    }
    Ensuite mettre hauteur en public dans Beton c'est moyen...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    oui en effet, il devrait être privé, mais pour l'instant, j'essaye juste de faire avaler un double à cet attribut ;-)

    Pour la création de l'objet, je l'ai mis ici par soucis de clareté (pour pas partir à sa recherche dans le code-). Au début, je l'ai mis dans le main, mais ça fonctionnait pas, après je l'ai mis dans la classe fenêtre, mais ça fonctionnait pas mieux Je dois avouer que savoir où je dois créer l'objet est assez confus pour moi :S

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    malheureusement, je suis toujours coincé avec un joli:

    a function-definition is not allowed here before '{' token. ligne 122

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    L'objet poutre tu le met dans la déclaration de ta classe MaFenetre.

    Pour ton problème je te donne ma solution qui vaut ce qu'elle vaut:

    Dans la classe Beton:
    Du créé les variables : hauteur, largeur, enrobage, moment, effortTranchant, as, ass, asw avec les accesseurs et les mutateurs qui vont bien (sauf pour les trois dernières ou tu ne créé que les accesseurs).

    Ensuite tu créé une fonction qui vas ce charger de faire tout les calculs.

    Dans MaFenetre:
    Tu créé un slot, appelé au clic de "calcul", qui aura pour but d'afficher le résultat.
    Dans ce slot tu devra dans un premier temps modifier les variables hauteur, largeur, enrobage, moment, effortTranchant de l'objet poutre à l'aide de tes accesseurs et mutateurs, appeler la fonction de calcul puis afficher as, ass et asw dans leur emplacement respectifs à l'aide des accesseurs.

    EDIT:
    a function-definition is not allowed here before '{' token. ligne 122
    Ce message t'indique qu'il manque une accolade.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Merci pour ta réponse,

    Ta manière de faire est bien celle que je compte utiliser à l'exception que je vais placer toutes les variables dans un seul tableau.

    Quand tu dis de mettre l'objet poutre dans la déclaration de la classe MaFenetre, tu veux dire qu'elle doit se trouver en première ligne dans le fichier sources:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    #include "MaFenetre.h"
    #include "Beton.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
     
    Beton poutre; // nouvelle objet
     
    blabla le reste
     
    }
    ou au niveau du prototype? Dans les deux cas, ça ne fonctionne pas (même message qu'avant). Et je ne vois pas ou il manque cette fichue accolade .

    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
    #include "MaFenetre.h"
    #include "Beton.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
     
     
     
        // Construction du bouton
        m_hauteur = new QDoubleSpinBox(this);
        m_largeur = new QDoubleSpinBox(this);
        m_enrobage = new QDoubleSpinBox(this);
     
        QLabel *hauteur = new QLabel("hauteur");
        QLabel *largeur = new QLabel("largeur");
        QLabel *enrobage = new QLabel("enrobage");
     
        QLabel *hauteurcm = new QLabel("cm");
        QLabel *largeurcm = new QLabel("cm");
        QLabel *enrobagecm = new QLabel("cm");
     
     
     
     
    //Geometrie
        QGridLayout *geometrie = new QGridLayout;
     
        geometrie->addWidget(hauteur,2,0);
        geometrie->addWidget(largeur,1,0);
        geometrie->addWidget(enrobage,0,0);
     
        geometrie->addWidget(hauteurcm,2,2);
        geometrie->addWidget(largeurcm,1,2);
        geometrie->addWidget(enrobagecm,0,2);
     
     
        geometrie->addWidget(m_enrobage,0,1);
        geometrie->addWidget(m_largeur,1,1);
        geometrie->addWidget(m_hauteur,2,1);
     
        QGroupBox *groupGeom = new QGroupBox ("Géométrie et caractéristiques");
        groupGeom->setLayout(geometrie);
     
     
    //action
     
        m_moment = new QDoubleSpinBox(this);
        m_tranchant = new QDoubleSpinBox(this);
        QLabel *moment = new QLabel("moment");
        QLabel *tranchant = new QLabel("Effort tranchant");
        QLabel *tranchantkN = new QLabel("kN");
        QLabel *momentkNm = new QLabel("kNm");
     
     
     
        QGridLayout *action = new QGridLayout;
        action->addWidget(moment,0,0);
        action->addWidget(tranchant,1,0);
     
        action->addWidget(momentkNm,0,2);
        action->addWidget(tranchantkN,1,2);
     
     
        action->addWidget(m_moment,0,1);
        action->addWidget(m_tranchant,1,1);
     
     
        QGroupBox *groupAction = new QGroupBox ("Actions");
        groupAction->setLayout(action);
     
    //bouton clacul
     
        m_calculBeton = new QPushButton("calcul");
     
    //Résultat
     
        m_As = new QLineEdit(this);
        m_Ass = new QLineEdit(this);
        m_Asw = new QLineEdit(this);
        QLabel *As = new QLabel("As");
        QLabel *Ass = new QLabel("As'");
        QLabel *Asw = new QLabel("Asw");
        QLabel *ascm2 = new QLabel("cm²");
        QLabel *asscm2 = new QLabel("cm²");
        QLabel *aswcm2 = new QLabel("cm²");
     
     
        QGridLayout *resultat = new QGridLayout;
        resultat->addWidget(As,0,0);
        resultat->addWidget(Ass,1,0);
        resultat->addWidget(Asw,2,0);
     
        resultat->addWidget(ascm2,0,2);
        resultat->addWidget(asscm2,1,2);
        resultat->addWidget(aswcm2,2,2);
     
        resultat->addWidget(m_As,0,1);
        resultat->addWidget(m_Ass,1,1);
        resultat->addWidget(m_Asw,2,1);
     
     
        QGroupBox *groupResultat = new QGroupBox ("Résultat");
        groupResultat->setLayout(resultat);
     
     
    //Principal
        QVBoxLayout *layoutPrincipal = new QVBoxLayout;
        layoutPrincipal->addWidget(groupGeom);
        layoutPrincipal->addWidget(groupAction);
        layoutPrincipal->addWidget(m_calculBeton);
        layoutPrincipal->addWidget(groupResultat);
     
     
     
        setLayout(layoutPrincipal);
     
    // implementation slot
     
     
     
    void MaFenetre::calculBeton(double h)
    {
        poutre.hauteur=h;
    }
    }
    Merci en tout cas du temps que tu as pris pour me répondre

  11. #11
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    C'est l'accolade qui ferme le constructeur qu'il manque, l'erreur te dit que t'as pas le droit de déclarer une fonction avant la ligne 122, en effet puisque tu es encore dans le constructeur (que tu dois fermer avant la ligne 121).

    Renseigne-toi sur la portée et la durée de vie des variables pour savoir où les déclarer.
    Une variable est détruite à la fin du bloc où elle est créée ( "}" ). Une variable membre de l'objet est détruite en même temps que l'objet (donc vit en même temps que l'objet) sauf destruction explicite avant bien sûr.

    En déclarant "poutre" dans le constructeur, il est détruit à la fin de la fonction donc tu peux pas t'en servir dans une autre. Donc il faut bien la déclarer en membre de MaFenetre.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    En effet, j'avais pas réalisé que j'étais toujours dans le constructeur. ce côté est parfaitement résolu ^^

    Cependant, la création de l'objet poutre ne l'est pas. Intuitivement, je la déclarerais dans le "main" avant la fenêtre, mais je n'arrive pas à y accéder par la méthode de la class main. Et si je la déclare dans la class (pas dans le constructeur ;-)) ligne 122, il me renvoie une nouvelle injure à la figure pas hyper explicite ^^


    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
     
    #include "MaFenetre.h"
    #include "Beton.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
     
     
     
        // Construction du bouton
        m_hauteur = new QDoubleSpinBox(this);
        m_largeur = new QDoubleSpinBox(this);
        m_enrobage = new QDoubleSpinBox(this);
     
        QLabel *hauteur = new QLabel("hauteur");
        QLabel *largeur = new QLabel("largeur");
        QLabel *enrobage = new QLabel("enrobage");
     
        QLabel *hauteurcm = new QLabel("cm");
        QLabel *largeurcm = new QLabel("cm");
        QLabel *enrobagecm = new QLabel("cm");
     
     
     
     
    //Geometrie
        QGridLayout *geometrie = new QGridLayout;
     
        geometrie->addWidget(hauteur,2,0);
        geometrie->addWidget(largeur,1,0);
        geometrie->addWidget(enrobage,0,0);
     
        geometrie->addWidget(hauteurcm,2,2);
        geometrie->addWidget(largeurcm,1,2);
        geometrie->addWidget(enrobagecm,0,2);
     
     
        geometrie->addWidget(m_enrobage,0,1);
        geometrie->addWidget(m_largeur,1,1);
        geometrie->addWidget(m_hauteur,2,1);
     
        QGroupBox *groupGeom = new QGroupBox ("Géométrie et caractéristiques");
        groupGeom->setLayout(geometrie);
     
     
    //action
     
        m_moment = new QDoubleSpinBox(this);
        m_tranchant = new QDoubleSpinBox(this);
        QLabel *moment = new QLabel("moment");
        QLabel *tranchant = new QLabel("Effort tranchant");
        QLabel *tranchantkN = new QLabel("kN");
        QLabel *momentkNm = new QLabel("kNm");
     
     
     
        QGridLayout *action = new QGridLayout;
        action->addWidget(moment,0,0);
        action->addWidget(tranchant,1,0);
     
        action->addWidget(momentkNm,0,2);
        action->addWidget(tranchantkN,1,2);
     
     
        action->addWidget(m_moment,0,1);
        action->addWidget(m_tranchant,1,1);
     
     
        QGroupBox *groupAction = new QGroupBox ("Actions");
        groupAction->setLayout(action);
     
    //bouton clacul
     
        m_calculBeton = new QPushButton("calcul");
     
    //Résultat
     
        m_As = new QLineEdit(this);
        m_Ass = new QLineEdit(this);
        m_Asw = new QLineEdit(this);
        QLabel *As = new QLabel("As");
        QLabel *Ass = new QLabel("As'");
        QLabel *Asw = new QLabel("Asw");
        QLabel *ascm2 = new QLabel("cm²");
        QLabel *asscm2 = new QLabel("cm²");
        QLabel *aswcm2 = new QLabel("cm²");
     
     
        QGridLayout *resultat = new QGridLayout;
        resultat->addWidget(As,0,0);
        resultat->addWidget(Ass,1,0);
        resultat->addWidget(Asw,2,0);
     
        resultat->addWidget(ascm2,0,2);
        resultat->addWidget(asscm2,1,2);
        resultat->addWidget(aswcm2,2,2);
     
        resultat->addWidget(m_As,0,1);
        resultat->addWidget(m_Ass,1,1);
        resultat->addWidget(m_Asw,2,1);
     
     
        QGroupBox *groupResultat = new QGroupBox ("Résultat");
        groupResultat->setLayout(resultat);
     
     
    //Principal
        QVBoxLayout *layoutPrincipal = new QVBoxLayout;
        layoutPrincipal->addWidget(groupGeom);
        layoutPrincipal->addWidget(groupAction);
        layoutPrincipal->addWidget(m_calculBeton);
        layoutPrincipal->addWidget(groupResultat);
     
     
     
        setLayout(layoutPrincipal);
     
    // implementation slot
     
    }
     
        Beton poutre; // nouvelle objet
     
    void MaFenetre::calculBeton(double h)
    {
        poutre.hauteur=h;
    }
    D:\c++\beton>mingw32-make
    mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `D:/c++/beton'
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
    DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\Qt
    \2010.04\qt\include\QtCore" -I"c:\Qt\2010.04\qt\include\QtGui" -I"c:\Qt\2010.04\
    qt\include" -I"." -I"c:\Qt\2010.04\qt\include\ActiveQt" -I"debug" -I"c:\Qt\2010.
    04\qt\mkspecs\win32-g++" -o debug\MaFenetre.o MaFenetre.cpp
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
    DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\Qt
    \2010.04\qt\include\QtCore" -I"c:\Qt\2010.04\qt\include\QtGui" -I"c:\Qt\2010.04\
    qt\include" -I"." -I"c:\Qt\2010.04\qt\include\ActiveQt" -I"debug" -I"c:\Qt\2010.
    04\qt\mkspecs\win32-g++" -o debug\main.o main.cpp
    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
    oc -mthreads -Wl -Wl,-subsystem,windows -o debug\beton.exe debug/Beton.o debug/M
    aFenetre.o debug/main.o -L"c:\Qt\2010.04\qt\lib" -lmingw32 -lqtmaind -lQtGuid4
    -lQtCored4
    debug/MaFenetre.o: In function `MaFenetre':
    D:\c++\beton/MaFenetre.cpp:4: undefined reference to `vtable for MaFenetre'
    D:\c++\beton/MaFenetre.cpp:4: undefined reference to `vtable for MaFenetre'
    D:\c++\beton/MaFenetre.cpp:4: undefined reference to `vtable for MaFenetre'
    D:\c++\beton/MaFenetre.cpp:4: undefined reference to `vtable for MaFenetre'
    debug/main.o: In function `~MaFenetre':
    D:\c++\beton/MaFenetre.h:16: undefined reference to `vtable for MaFenetre'
    debug/main.o:\c++\beton/MaFenetre.h:16: more undefined references to `vtable f
    or MaFenetre' follow
    collect2: ld returned 1 exit status
    mingw32-make[1]: *** [debug\beton.exe] Error 1
    mingw32-make[1]: Leaving directory `D:/c++/beton'
    mingw32-make: *** [debug] Error 2
    Encore merci pour le coup de pouce

  13. #13
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Parce ça n'existe pas de déclarer une variable où tu le fais. On te dit de la déclarer en membre (=attribut) de la classe. C'est à dire en private dans MaFenetre.h !

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Essaye de faire un qmake (menu compiler -> exécuter qmake).

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Résolu! Merci pour votre aide.

    Finalement, la solution était en effet de créer le nouvel objet dans MaFenetre.cpp après le constructeur. Le probleme venait de la compilation comme l'a dit Arch74. J'ai tout recompilé une bonne fois avec qmake. et ça a fonctionné.

    Merci à tous

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

Discussions similaires

  1. [Débutant] Passage des valeurs d'une form à l'autre
    Par Faible37 dans le forum C#
    Réponses: 10
    Dernier message: 07/03/2013, 11h24
  2. Passage de valeurs d'un logiciel à un autre.
    Par flamel dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 28/10/2011, 16h23
  3. [AC-2007] passage de valeurs d'un formulaire à un autre
    Par virtual_bug dans le forum IHM
    Réponses: 5
    Dernier message: 21/06/2011, 17h41
  4. Passage de valeur d'une page à l'autre
    Par DJuL- dans le forum ASP.NET
    Réponses: 21
    Dernier message: 20/07/2007, 09h59
  5. [C#] Passage de valeur d'une fenêtre à une autre
    Par groum999 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/09/2004, 14h12

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