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 :

Comprendre la syntaxe pour définir un nouveau widget

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Par défaut Comprendre la syntaxe pour définir un nouveau widget
    Bonjour
    Je suis sur le cours Qt dit "Débutant" nommé
    "Débuter dans la création d'interfaces graphiques avec Qt 4
    "
    et je bloque sur l'exercice 4
    sur la déclaration suivante, mon (faible) esprit dérape ...
    sans doute trop de notions inconnues

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class MyWidget : public QWidget 
    {
        public:     MyWidget(QWidget *parent = 0); 
    }; 
    MyWidget::MyWidget(QWidget *parent)     : QWidget(parent) {
        setFixedSize(200, 120);
          ...
    Ce n'est pas la déclaration de la classe qui pose problème, ni l'héritage (en PHP5, je connais)
    mais l'appel du constructeur avec "*parent = 0"
    =0, c'est la valeur par défaut j'imagine, mais pourquoi pas NULL, il y est d'ailleurs question plus loin.
    et *parent ... comprends ni * ni parent ... (là aussi, je connais le mot réservé parent...
    mais là, ma généalogie s'y perd.
    puis, l'appel
    MyWidget::MyWidget(QWidget *parent) : QWidget(parent) {
    Pourquoi ces redondances (qui ont sûrement leur sens) ?
    Quand je vous dis que je suis dans le potage ...

    Je préciserais, à l'intention de ceux qui, voyant mes difficultés, me renverraient, d'un haussement d'épaule, aux cours C++,
    que cela fait plusieurs fois que je tente d'apprendre le C++, sans vouloir reprendre le C, abandonné il y a 20 ans,
    faute d'un projet motivant dans ma profession, et chaque cours de DEVELOPPEZ me renvoi au C ... fin de la boucle :-)

    Olivier

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Citation Envoyé par a028762 Voir le message
    =0, c'est la valeur par défaut j'imagine,
    Oui

    Citation Envoyé par a028762 Voir le message
    mais pourquoi pas NULL
    Tout à fait en C++ NULL et 0 sont équivalents et permettent d'initialiser un pointeur nul.

    Citation Envoyé par a028762 Voir le message
    (là aussi, je connais le mot réservé parent...
    A bon! parent n'est pas un mot réservé, c'est ici un paramètre attendu lors de la construction

    Citation Envoyé par a028762 Voir le message
    MyWidget::MyWidget(QWidget *parent) : QWidget(parent) {
    Pourquoi ces redondances (qui ont sûrement leur sens) ?
    Quand je vous dis que je suis dans le potage ...
    Le doublement est du au fait que le constructeur a le même nom que sa classe, ici:
    MyWidget : classe concernée
    ::
    MyWidget : constructeur de la classe
    (
    QWidget*parent : le paramètre attendu pour construire une objet de type MyWidget (qui doit être du type QWidget*)
    )
    : ce symbole est utilisé dans un constructeur pour introduire le liste des Bases et des élements à pré-initialiser
    QWidget( parent ) : la classe de base de MyWidget est initialisée en lui passant le paramètre parent (en C++ on doit rappeler le nom de la base car il peut y en avoir plusieurs)
    { : début de la définition du constructeur

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Citation Envoyé par a028762 Voir le message
    Je préciserais, à l'intention de ceux qui, voyant mes difficultés, me renverraient, d'un haussement d'épaule, aux cours C++,
    que cela fait plusieurs fois que je tente d'apprendre le C++, sans vouloir reprendre le C, abandonné il y a 20 ans,
    faute d'un projet motivant dans ma profession, et chaque cours de DEVELOPPEZ me renvoi au C ... fin de la boucle :-)
    En effet, sans bonnes bases en C++, il te sera difficile d'avancer sans buter à chaque ligne . Et le C est strictement inutile ici, plutôt nocif, en réalité (ce qui signifie que je n'ai pas la plus haute estime des cours C++ publiés ici ). Regarde quelque chose comme http://www.amazon.com/dp/0321714113/ ou http://www.amazon.com/dp/0321992784/ (en français, http://cpp.developpez.com/livres/ind...us#L2100543296), par exemple.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    D'ailleurs, quitte à faire du C++, ça ne serait plus judicieux de la part de Qt de mette enfin QWidget *parent = nullptr à la place ?

    Depuis le temps, je pense que ce mot-clé est supporté, non ?

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par Daïmanu Voir le message
    D'ailleurs, quitte à faire du C++, ça ne serait plus judicieux de la part de Qt de mette enfin QWidget *parent = nullptr à la place ?

    Depuis le temps, je pense que ce mot-clé est supporté, non ?
    C'est arrivé avec C++11 et la version 5.6 doit garder la compatibilité avec C++98. Par contre, dès la prochaine (5.7), ça fait partie des changements possibles (http://qt.developpez.com/actu/94073/...ant-trois-ans/).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  6. #6
    Membre éclairé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Par défaut
    Merci à vous trois de vos réponses constructives.
    Me voila rassuré, j'éviterais donc de tomber dans les griffes du java
    Olivier

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

Discussions similaires

  1. Aide pour comprendre la syntaxe d'une macro
    Par virtuadrack dans le forum C
    Réponses: 6
    Dernier message: 28/10/2009, 12h38
  2. Syntaxe pour définir les div en une ligne
    Par ml1234 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 04/07/2009, 15h20
  3. Réponses: 4
    Dernier message: 29/05/2009, 11h57
  4. Réponses: 2
    Dernier message: 04/04/2007, 09h03
  5. syntaxe pour définir une variable
    Par ecirb dans le forum InfoPath
    Réponses: 5
    Dernier message: 23/03/2007, 12h02

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