- QT
- AbulEduApplicationV1
- AbulEduAproposV1
- AbulEduAudioV1
- AbulEduButtonListV1
- AbulEduCameraV1
- AbulEduCameraWidgetV1
- AbulEduConstantesV1
- AbulEduEditeur
- AbulEduGraphicsEtiquetteV1
- AbulEduIdentitesV1
- AbulEduInstructionV1
- AbulEduMediaplayerV1
- AbulEduMediathequeGetV1
- AbulEduMenuFeuilleV1
- AbulEduNumericLinearPadv1
- AbulEduQRCodeReaderV1
- AbulEduSingletonV1
- AbulEduSlideWidgetContainerV1
- AbulEduStackedWidgetV1
- AbulEduTexteV1
- AbulEduTextV1
- AbulEduTutorialV1
- AbulEduVirtualKeyboardV1
- AbulEduVisionneuseImageV1
- AbulEduWidgetAssistantEtapesV1
- Affichage des messages d'erreurs
- Affichage dynamique des étapes d'un éditeur
- Bouton croix de fenêtre
- Centrer une fenêtre
- Création fichierdossier temporaire unique
- Créer une AbulÉduApplicationV1 dans QtCreator
- Framework Graphic View
- Framework Graphic Viewodt
- Framework State Machine
- Générer automatiquement un dictionnaire de verbes
- Gérer la modalité des fenêtres
- Gestion des arguments
- Getters par référence et non par valeur
- Installation Qt5
- Installation Qt56
- Normalisation des modules
- Partager des variables avec différents pri
- Redimensionnement application Qt
- Redimensionner un QGraphicsSvgItem
- Tests et Logs sous Windows
- Utilisation de l'assistant AbulEduApplicationV1
- Utiliser des QSharedPointer
Paramètres par défaut dans les constructeurs¶
Si certains objets ont plusieurs constructeurs, appelés avec des paramètres différents, on peut aussi dans le prototype du constructeur (dans le .h) initialiser les valeurs des paramètres.
Ainsi on peut appeler un même constructeur avec un nombre de paramètres différents.
Quand, dans le code de leterrier-calculmental, je veux proposer des additions, je crée un exercice
exercice* monExo1 = new exercice("addition");
Mais quand je veux proposer des compléments additifs à 10, je crée mon exercice avec
exercice* monExo1 = new exercice("complementA",10);
En fait voici le constructeur :
exercice(QString, int val=0, QString niveau=0,QWidget *parent = 0);
Attention toutefois à deux choses :
- Ordre des paramètres dans le constructeur : les paramètres initialisés doivent obligatoirement (sinon pas de compilation) être dans le prototype après les paramètres non initialisés. Exemple de prototype rejeté à la compilation :
exercice(QString, int val=0, QString niveau,QWidget *parent = 0);
pour initialiser la valeur mais pas le niveau, il faudrait écrire :exercice(QString, QString niveau, int val=0, QWidget *parent = 0);
Tout le monde a bien compris qu'alors on ne pourrait pas alors appeler un exercice sans préciser dans l'appel le niveau ? - Passage de paramètres initialisés : les paramètres ont une valeur par défaut mais on peut en donner une de façon explicite; attention toutefois, on ne peut passer une valeur à un paramètre initialisé que si on en a passé une à tous les paramètres qui précèdent. Avec mon constructeur, les appels suivants seront donc à la compilation :
Acceptéexercice* monExo1 = new exercice("addition");
Acceptéexercice* monExo1 = new exercice("complementA",10);
Acceptéexercice* monExo1 = new exercice("addition",10,"Niveau2");
Accepté (rappel : dans une classe, "this" représente l'objet instancié)exercice* monExo1 = new exercice("addition",10,"Niveau2", this);
Rejetéexercice* monExo1 = new exercice("addition",this);
Rejeté ("" est une valeur pour la QString niveau, vide ≠ nul pour les QString)exercice* monExo1 = new exercice("addition","");