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 :

la classe qapplication et la methode setMainWidget


Sujet :

Qt

  1. #1
    Inactif
    Inscrit en
    Avril 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 55
    Points : 44
    Points
    44
    Par défaut la classe qapplication et la methode setMainWidget
    saut,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <qapplication.h>
    #include "signature.h"
    int main(int argc,char** argv)
    {
     
    QApplication a(argc,argv);
    Signature* signature=new Signature(0);
    a.setMainWindows(signature);
    signature->show();
    return a.exec();
    }
    j'ai trouvé ce code dans tutorial seleument il ne compile pas!
    l'erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ....../main.cpp:20: error: ‘class QApplication’ has no member named ‘setMainWidget’
    pour d'autres remarques:
    ce tutorial est pour QT version 3 et je suis sur la version 4.5

  2. #2
    Membre habitué Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Points : 143
    Points
    143
    Par défaut
    Hum, c'est bizzarre... erreur à la ligne 20 et tu n'a même pas 20 lignes dans ton code. De plus, la méthode qui pose problème n'apparait même pas dans ton code. Est tu sur que tu compile le bon fichier ou que tu nous montre le bon fichier ?

  3. #3
    Inactif
    Inscrit en
    Avril 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 55
    Points : 44
    Points
    44
    Par défaut
    normalement tu ne dois pas me poser de telle questions????


    je ne vais comme meme recopier tout le code????
    l'erreur est claire, à moins que tu ne l'as pas lu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class QApplication’ has no member named ‘setMainWidget
    en tout cas setMainWidget est une methode Virtuelle de la classe QApplication

  4. #4
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Je comprends que tu ne veuilles pas forcèment qu'on te pose de questions sur ton code mais comme tu l'as dis toi même l'erreur est clair et elle se trouve a la ligne 20 de ton fichier, ligne 20 dont nous n'avons pas connaissance, nous allons donc avoir du mal a t'aider .
    De plus il y a pas mal d'incohérence dans ton message, l'erreur parle de setMainWidget et dans ton code tu appel setMainWindows, de plus il ne me semble pas que QApplication est une méthode appelé setMainWidget...
    Omnes Vulnerant Ultima Necat
    Bye

  5. #5
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    Je rejoint la même idée.
    C'est louche le coup de la ligne, et que la fameuse méthode qui n'existe pas, tu ne l'utilise même pas dans le code que tu nous montres.
    De plus, setMainWindows, ou même setMainWidget n'existe pas...du moins aujourd'hui.
    Peut être qu'au moment de Qt 3...
    "ce tutorial est pour QT version 3 et je suis sur la version 4.5 "...

  6. #6
    Inactif
    Inscrit en
    Avril 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 55
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par jeanjack Voir le message
    saut,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <qapplication.h>
    #include "signature.h"
    int main(int argc,char** argv)
    {
     
    QApplication a(argc,argv);
    Signature* signature=new Signature(0);
    a.setMainWidget(signature);
    signature->show();
    return a.exec();
    }
    j'ai trouvé ce code dans tutorial seleument il ne compile pas!
    l'erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ....../main.cpp:20: error: ‘class QApplication’ has no member named ‘setMainWidget’
    pour d'autres remarques:
    ce tutorial est pour QT version 3 et je suis sur la version 4.5

  7. #7
    Inactif
    Inscrit en
    Avril 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 55
    Points : 44
    Points
    44
    Par défaut
    en tout cas le pb est le setMainWidget

  8. #8
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Tu comptes vraiment obtenir de l'aide cette façon ?
    En faisant l'effort de te répondre je te dirais que cela vient (en plus d'une éventuelle erreur de ta part) du problème de version de Qt, car dans la version 3 de Qt, la classe QApplication possédait bien une méthode appelé setMainWidget, mais pas dans la version 4.5.
    Omnes Vulnerant Ultima Necat
    Bye

  9. #9
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    bonjour,
    essaye ça 
    #include <qapplication.h>
    #include "signature.h"
    int main(int argc,char** argv)
    {
     
    QApplication a(argc,argv);
    Signature* signature=new Signature(0);
    // a.setMainWidget(signature); supprime ça pour voir
    signature->show();
    return a.exec();
    }
    et tu peux nous dire quelle est la classe de base de la classe Signature ?
    If you type Google into Google, you Can break the internet" - The IT Crowd

  10. #10
    Inactif
    Inscrit en
    Avril 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 55
    Points : 44
    Points
    44
    Par défaut
    bon voilà tout le code de la classe Signature

    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
     
    #include "Signature.h"
    #include <qpushbutton.h>
    #include <qlabel.h>
    #include <qtextedit.h>
    #include <qlineedit.h>
    #include <qgroupbox.h>
    #include <qlayout.h>
    #include <qstring.h>
    #include <qmessagebox.h>
     
    /*ligne 11*/Signature::Signature(QWidget* parent,const char* name):QDialog(parent,name)//c la ligne 11
    {
    /*ligne 13*/setCaption(tr("Signature"));//cette ligne cause problème aussi
    QGroupBox* details=new QGroupBox("Detais",this);
    nom=new QLineEdit(details);
    prenom=new QLineEdit(details);
    mail=new QLineEdit(details);
    textSignature=new QTextEdit(this);
    textSignature->setReadOnly(true);
    creer=new QPushButton("&Creer",this);
    fermer=new QPushButton("&Fermer",this);
    labelNom=new QLabel("Nom",details);
    labelPrenom=new QLabel("Prenom",details);
    labelEmail=new QLabel("Email",details);
    labelSignature=new QLabel("Signature",this);
     
    QGridLayout* SignatureLayout=new QGridLaout(this,1,1,11,6);
    QHBoxLayout* layoutButton=new QHBoxLayout(0,0,6);
    layoutButton->addWidget(creer);
    QSpacerItem* spacer=QSpacerItem(151,20,QSizePolicy::Expanding);
    layoutButton->addWidget(spacer);
    layoutButton->addWidget(fermer);
    SignatureLayout->addLayout(layoutButton,3,0);
    SignatureLayout->addWidget(textSignature,2,0);
    details->setColumnLayout(0,Qt::Vertical);
    details->setLayout()->setSpacing(6);
    details->setLayout()->setMargin(11);
    QGridLayout* detailsLayout=new QGridLayout(details->layout());
    detailsLayout->setAlignment(Qt::AlignTop);
    detailsLayout->addWidget(labelNom, 0,0);
    detailsLayout->addWidget(labelPrenom, 1,0);
    detailsLayout->addWidget(labelEmail, 2,0);
    detailsLayout->addWidget(nom, 0,1);
    detailsLayout->addWidget(prenom, 1,1);
    detailsLayout->addWidget(mail, 2,1);
    SignatureLayout->addWidget(detailsLayout,0,0);
    connect(fermer,SIGNAL(clicked())),this,SLOT(close());
    connect(creer,SIGNAL(clicked()),this,SLOT(slotCreer()));
     
    }
     
    void Signature::slotCreer(){
    if(nom->text().Empty()||mail->text().Empty())
        {
        QMessageBox::information(this,"Signature","Veuillez renseigner un nom\n","ainsi qu'une adresse mail");
        return;
    }
     
    QString message;
    message=prenom->text() + " "+ nom->text() + "peut etre contacter à l'adresse" + mail->text();
    textSignature->setText(message);
    }
    et apres execution de ta remarque voilà une nouvelle erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ....../Signature.cpp:11: error: no matching function for call to ‘QDialog::QDialog(QWidget*&, const char*&)
    et la deuxième

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ......./Signature.cpp:13: error: ‘setCaption’ was not declared in this scope

  11. #11
    Membre habitué Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Points : 143
    Points
    143
    Par défaut
    Pour ta première erreur :

    Voici le constructeur de la classe QDialog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDialog ( QWidget * parent = 0, Qt::WindowFlags f = 0 )
    Il n'y a pas de deuxième argument de type char. Il faut que tu vire le "name" passé en argument à la classe mère.

  12. #12
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    J'ai l'impression que toutes ces erreurs sont du a des incompatibilité de versions de Qt. Pour le constructeur tu dois enlever la chaîne de caractère dans l'appel au constructeur de QDialog et pour la fonction setCaption, elle n'éxiste plus, je crois que c'était pour mettre le titre non ? Auquel cas tu dois utiliser setWindowTitle a la place.
    Omnes Vulnerant Ultima Necat
    Bye

  13. #13
    Membre habitué Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Points : 143
    Points
    143
    Par défaut
    Et pour la deuxième erreur, le setCaption date de qt3, il n'existe plus.

  14. #14
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    dans la version QT 4.5 le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDialog::QDialog(QWidget*&, const char*&)
    n'existe pas,
    tu peux essayer de surcharger avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDialog::QDialog ( QWidget * parent, const char * name, bool modal = false, Qt::WindowFlags f = 0 )
    qui est un support de la version Qt3
    If you type Google into Google, you Can break the internet" - The IT Crowd

  15. #15
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    La solution ultime, trouver un tuto Qt 4.X

  16. #16
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 71
    Points : 46
    Points
    46
    Par défaut reponse
    or X11, this function also resizes and moves the main widget according to the -geometry command-line option, so you should set the default geometry (using QWidget::setGeometry()) before calling setMainWidget().


    t'utilise Linux moi aussi je suis dans ton cas

Discussions similaires

  1. Classe ok dans une methode main, ko dans la servlet
    Par chennuo dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/01/2010, 10h51
  2. Réponses: 14
    Dernier message: 10/09/2009, 19h08
  3. Réponses: 4
    Dernier message: 09/10/2008, 09h04
  4. Réponses: 21
    Dernier message: 22/10/2007, 10h10
  5. classe abstraite avec des methodes manquantes
    Par kkkkkk dans le forum Langage
    Réponses: 6
    Dernier message: 17/10/2007, 15h13

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