Partage
  • Partager sur Facebook
  • Partager sur Twitter

pointeur et constructeurs

Qt

    23 mars 2008 à 21:13:49

    Bonjour,
    j'ai un petit probleme avec mon code:
    main.cpp
    1. #define HE
    2. #include <QApplication>
    3. #include <QFont>
    4. #include <QPushButton>
    5. #include <QLabel>
    6. #include <QTextEdit>
    7. #include <QtNetwork\QTcpServer>
    8. #include <QtCore\QObject>
    9. #include <QString>
    10. #include "link.h"
    11. using namespace std;
    12. int main(int argc, char* argv[])
    13. {
    14.     QApplication app(argc, argv);
    15.     QWidget fenetrep; /**objet parent*/
    16.     /**creation of objects link to the parent */
    17.     QPushButton BoutonSeb("Seb",&fenetrep);
    18.     QPushButton BoutonJer("Jer",&fenetrep);
    19.     QPushButton BoutonThi("Thi",&fenetrep);
    20.     QPushButton BoutonEnvoyer("Envoyer",&fenetrep);
    21.     QPushButton BoutonQuitter("Quitter",&fenetrep);
    22.     QLabel LabelConnection("Label d'info",&fenetrep);
    23.     QLabel LabelReceive("Label de reception",&fenetrep);
    24.     QTextEdit TextZone(&fenetrep);
    25.     link tra(TextZone.toPlainText(),&LabelConnection);
    26.     /**end */
    27.     /**Resize*/
    28.     fenetrep.resize(800,600);
    29.     BoutonJer.setGeometry(10, 10,50,30);
    30.     BoutonSeb.setGeometry(375, 10,50,30);
    31.     BoutonThi.setGeometry(740, 10,50,30);
    32.     BoutonEnvoyer.setGeometry(370, 500,75,45);
    33.     BoutonQuitter.setGeometry(370,550,75,45);
    34.     LabelConnection.setGeometry(10,30,775,45);
    35.     LabelReceive.setGeometry(10,60,775,300);
    36.     TextZone.setGeometry(10,450,775,45);
    37.     /**end*/
    38.     /**event*/
    39.         QObject::connect(&BoutonQuitter,SIGNAL(clicked()),&app,SLOT(quit()));
    40.     /**end*/
    41.     /**Server*/
    42.     /**end*/
    43.     fenetrep.show();
    44.     return app.exec();
    45. }


    link.h
    1. #ifndef HE
    2. #include <QtCore\QObject>
    3. #endif
    4. using namespace std;
    5. class link
    6. {
    7.     public:
    8.     link(const QString T, QLabel *L) : Text(T),Label(L)
    9.      {
    10.      };
    11.     void affichage()
    12.     {
    13.         Label->QLabel("texte");
    14.     }
    15.     private:
    16.     QString Text;
    17.     QLabel *Label;
    18. };


    En faite je veut que des que je clique sur le boutton envoyer, le label (objet LabelConnection) affiche le texte que j'ai saisi dans l'objet TextZone.
    Il faut donc que je recupere le text et l'adresse du label. C'est ce que je fait avec la classe(le constructeur va recuperer sa).
    Ensuite je vai faire(plus tar) un slot sans parametre car le signal de contient pa de param( SIGNAL(clicked()) ). Ce slot fera apelle a la fonction
    void affichage () sensé faire ce que je veut.

    Normalement quand je met Label->QLabel("text"); sa revient à faire(*Label).QLabel("Texte"); soit apeléle constructeur de la classe QLabel de l'objet Label.
    Mais la compilation bug sur cette ligne.

    Pouvez vous me dire pourquoi?

    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      23 mars 2008 à 23:08:44

      pas relire les cours !
      c'est pas :
      1. Label->QLabel("texte");

      mais
      1. Label->setText("texte");
      • Partager sur Facebook
      • Partager sur Twitter
        23 mars 2008 à 23:46:06

        merci pour ta reponse.
        Mais j'ai un nouveau probleme qui intervient quand j'essaye de mettre mon slot:

        main.cpp
        1. #define HE
        2. #include <QApplication>
        3. #include <QFont>
        4. #include <QPushButton>
        5. #include <QLabel>
        6. #include <QTextEdit>
        7. #include <QtNetwork\QTcpServer>
        8. #include <QtCore\QObject>
        9. #include <QtCore\QString>
        10. #include "link.h"
        11. using namespace std;
        12. int main(int argc, char* argv[])
        13. {
        14.     QApplication app(argc, argv);
        15.     QWidget fenetrep; /**objet parent*/
        16.     /**creation of objects link to the parent */
        17.     QPushButton BoutonSeb("Seb",&fenetrep);
        18.     QPushButton BoutonJer("Jer",&fenetrep);
        19.     QPushButton BoutonThi("Thi",&fenetrep);
        20.     QPushButton BoutonEnvoyer("Envoyer",&fenetrep);
        21.     QPushButton BoutonQuitter("Quitter",&fenetrep);
        22.     QLabel LabelConnection("Label d'info",&fenetrep);
        23.     QLabel LabelReceive("Label de reception",&fenetrep);
        24.     QTextEdit TextZone(&fenetrep);
        25.     link tra(TextZone.toPlainText(),&LabelConnection);
        26.     /**end */
        27.     /**Resize*/
        28.     fenetrep.resize(800,600);
        29.     BoutonJer.setGeometry(10, 10,50,30);
        30.     BoutonSeb.setGeometry(375, 10,50,30);
        31.     BoutonThi.setGeometry(740, 10,50,30);
        32.     BoutonEnvoyer.setGeometry(370, 500,75,45);
        33.     BoutonQuitter.setGeometry(370,550,75,45);
        34.     LabelConnection.setGeometry(10,30,775,45);
        35.     LabelReceive.setGeometry(10,60,775,300);
        36.     TextZone.setGeometry(10,450,775,45);
        37.     /**end*/
        38.     /**event*/
        39.         QObject::connect(&BoutonQuitter,SIGNAL(clicked()),&app,SLOT(quit()));
        40.     /**end*/
        41.     /**Server*/
        42.     /**end*/
        43.     fenetrep.show();
        44.     return app.exec();
        45. }


        link.h
        1. #ifndef HE
        2. #include <QLabel>
        3. #include <QtCore\QObject>
        4. #endif
        5. using namespace std;
        6. class link
        7. {
        8.     Q_OBJECT
        9.     public:
        10.     link(const QString T, QLabel *L) : Text(T),Label(L)
        11.      {
        12.      };
        13.     void affichage();
        14.     public slots:
        15.     void appaff();
        16.     private:
        17.     QString Text;
        18.     QLabel *Label;
        19. };


        link.cpp
        1. #include "link.h"
        2. void link::appaff()
        3. {
        4.     affichage();
        5. }
        6. void link::affichage()
        7. {
        8.     Label->setText("texte");
        9. }


        Losque j'essaie de compiler j'ai une erreur à la ligne 9 de link.h disant:
        1. Class contains Q_OBJECT macro but does not inherit from QObject


        D'où cela peut provenir?
        • Partager sur Facebook
        • Partager sur Twitter
          24 mars 2008 à 1:25:11

          on ne peut mettre la macro Q_OBJECT QUE si ta classe hérite de QObject (directement ou indirectement)
          • Partager sur Facebook
          • Partager sur Twitter

          pointeur et constructeurs

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown