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 :

[Débutant] Question de débutant en Qt/C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 68
    Par défaut [Débutant] Question de débutant en Qt/C++
    Bonjour,
    Je viens du Java et j'ai dans les samples Qt le fichier .h suivant:

    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
     
    #ifndef WINDOW_H
    #define WINDOW_H
     
    #include <QSystemTrayIcon>
    #include <QWidget>
     
    class QAction;
    class QCheckBox;
    class QComboBox;
    class QGroupBox;
    class QLabel;
    class QLineEdit;
    class QMenu;
    class QPushButton;
    class QSpinBox;
    class QTextEdit;
     
    class Window : public QWidget
    {
        Q_OBJECT
     
    public:
        Window();
     
        void setVisible(bool visible);
     
    protected:
        void closeEvent(QCloseEvent *event);
     
    private slots:
        void setIcon(int index);
        void iconActivated(QSystemTrayIcon::ActivationReason reason);
        void showMessage();
        void messageClicked();
     
    private:
        void createIconGroupBox();
        void createMessageGroupBox();
        void createActions();
        void createTrayIcon();
     
        QGroupBox *iconGroupBox;
        QLabel *iconLabel;
        QComboBox *iconComboBox;
        QCheckBox *showIconCheckBox;
     
        QGroupBox *messageGroupBox;
        QLabel *typeLabel;
        QLabel *durationLabel;
        QLabel *durationWarningLabel;
        QLabel *titleLabel;
        QLabel *bodyLabel;
        QComboBox *typeComboBox;
        QSpinBox *durationSpinBox;
        QLineEdit *titleEdit;
        QTextEdit *bodyEdit;
        QPushButton *showMessageButton;
     
        QAction *minimizeAction;
        QAction *maximizeAction;
        QAction *restoreAction;
        QAction *quitAction;
     
        QSystemTrayIcon *trayIcon;
        QMenu *trayIconMenu;
    };
     
    #endif
    Je ne comprends pas à quoi correspondent les lignes ci-dessous:

    class QAction;
    etc...


    A quoi servent elles? Que veut dire le mot clef class? Je croyais que cela était utilisé pour déclarer une nouvelle classe comme en java.

    Avez-vous une idée?

    Julien.

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Il s'agit de forward declaration qui a pour double but d'éviter les inclusions mutuelles (A a besoin de connaître B qui a besoin de connaître A), et de passer outre la nécessité de recompiler les fichiers dépendant de l'en-tête où c'est utilisée lorsque l'une des déclarations de classe change.

    Edit: une belle faute d'ortho...

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Pour être plus vulgaire (dans le sens vulgarisation) qu'IrmatDen, ce procédé est une "optimisation de ton programme".
    Il aurait été possible de mettre des #include à la place des "class", mais, pour faire simple, en faisant ça, tu risques de faire plusieurs fois les #include du même fichier dan ton programme -> perte de place et de temps.

    En faisant ainsi, pour faire simple (encore et toujours), disons que ton compilateur ne détecte pas d'erreur dans ton monFichier.h car les class existe bien (même si elles sont vides), et c'est dans un autre fichier que le vrai #include a lieu (le monFichier.cpp par exemple), et qui apporte le contenu de cette class.

    Enfin, j'éspère que ç'est un peu plus clair.

    g.

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

Discussions similaires

  1. [débutant] question sur les #
    Par Ultros dans le forum C
    Réponses: 3
    Dernier message: 29/04/2004, 12h30
  2. PL/Sql Débutant question
    Par Guld dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/02/2004, 17h48
  3. [MFC] Quelques questions de débutant...
    Par Sephi dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2004, 17h25
  4. Questions de débutant
    Par J-P-B dans le forum XMLRAD
    Réponses: 12
    Dernier message: 24/07/2003, 15h19
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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