PDA

Afficher la version complète : [Réglé] qt designer



atlas
27/10/2004, 18h50
lol

Je découvre qt-designer via son premier tuto en ligne (metric conversion) que voici

1/commande ""designer" ensuite menu /help/manual/qtdesigner/quick start

Je cale vers la fin du tuto

<div class='quotetop'>Citation </div>
Next, we will implement the init() function which is called when the dialog is created.
Comment implementer la fonction init() , dans quel fichier ?
void ConversionForm::init()
{
numberLineEdit->setValidator( new QDoubleValidator( numberLineEdit ) );
numberLineEdit->setText( "10" );
convert();
numberLineEdit->selectAll();
}
For this function, we set a validator on the numberLineEdit so that the user can only input numbers. To be able to do this, we also need to add #include <qvalidator.h> at the top of the form, right above the init(). Lastly, we set the initial input.
Commen tajouter la ligne de code suivante :
#include <qvalidator.h> ?[/b]

Sinon reussi à creer le fichier main.cpp
Autre question de base : à quoi sert un fichier d'en tête xxxxx.h ?

Merci

lucienmathieu
27/10/2004, 18h55
le .h est utilise pour definir l'ensemble des types de donnees ou les fonctions que tu peux utiliser.

par example si je definit la fonction foo dans foo.c, je ferais comme suit:

void foo() {
/* code de foo...
}

si je veux appeler foo, il faut pouvoir le faire connaitre ailleur, donc le .h est la pour ca.

et dans mon point h, je vais mettre le code suivant

#ifndef __FOO_H
#define __FOO_H
void foo();
#endif

je n'aurai plus cas creer le fichier main.c, et je pourrai appeler la fonction foo.

#include "foo.h"

main() {
foo();
}

lucienmathieu
27/10/2004, 18h57
Pour la fonction init, tu devras chercher une classe ConversionForm, ou alors du moins une classe qui en derive et ou tu pourras redefinir la methode init. En fait init n'est qu'une fonction de cette classe.

Il faudra que tu d'habitue au C++ et aux definitions de classes.

atlas
27/10/2004, 19h16
Waou , rapide à la réponse

pour le .h en résumé ça me sert à appeler des fichiers et à fortiori les fonctions à l'intérieur de ces fichiers .
Premiere impression , je trouve la procédure lourde ; tout ça pour appeler des fichiers ...

Quand à la notion de classe , j'aie pas encore saisi et je vais relire le tuto .
Pour obtenir ConversionForm , je me suis contenté dans la fenetre 'property editor"
pour le name de ma fenetre principale , j'aie tapé "ConversionForm" http://www.alionet.org/style_emoticons/<#EMO_DIR#>/dry.gif

lucienmathieu
27/10/2004, 20h05
le .h est un fichier contenant seulement la definition des fonctions.
Ce procede est pratique pour la modularisation de ton code.
Aussi c'est pratique pour la compilation car tu devrais creer un seul fichier si tu voulais faire autrement, et oui le code d'une meme fonction ne peut pas se trouver a 2 endroits en meme temps.

Normelement, si qt-designer a ete malin, il t'aura cree un fichier ConversionForm.cpp et un ConversionForm.hpp, dans le hpp tu devrais avoir le code suivant:

class ConversionForm : public "quelquechose" {
public:
ConversionForm();
/* une serie d'autres methodes...
// void init();
~ConversionForm();
};

si tu ne vois pas la fonction init dans la definition de ta classe, elle est peut-etre definie dans la classe parent, mais il faudra toujour l'ajoutee dans ta classe ConversionForm. J'ai mis l'exemple dans la classe, tu devras l'ajouter sans les //

et dans le .cpp, tu n'auras plus qu'a ajouter le code que tu desire, apparemment celui que tu as mis dans ton premier message.

atlas
27/10/2004, 22h33
Aucun fichier ConversionForm.cpp et un ConversionForm.hpp n'ont été crées ...

Ou aie-je accès au définition de ma classe , Je n'aie vu aucun fichier dont le code commence par :

class xxxForm : public "quelquechose"

En revanche qtdesigner me crée spontanément des fichiers Form1.ui.h

lucienmathieu
28/10/2004, 09h45
Et qu'est-ce qu'il y a dans ton Form1.ui.h?

Tu devrais avoir une liste d'objets a gauche avec l'arborescence de tes classes!

atlas
28/10/2004, 19h30
Dans mon Form1.ui.h j'aie mis l'algo de conversion métrique comme demandé dans le tuto
Voici
<div class='quotetop'>Citation </div>
/************************************************** **************************
** ui.h extension file, included from the uic-generated form implementation.
**
** If you wish to add, delete or rename functions or slots use
** Qt Designer which will update this file, preserving your code. Create an
** init() function in place of a constructor, and a destroy() function in
** place of a destructor.
************************************************** ***************************/


void ConversionForm::calculsconversion()
{
enum MetricUnits {
Kilometers,
Meters,
Centimeters,
Millimeters
};
enum OldUnits {
Miles,
etc ............................[/b]

<div class='quotetop'>Citation </div>
Tu devrais avoir une liste d'objets a gauche avec l'arborescence de tes classes![/b]

Heu , je suppose que tu parles de la fenetre "object explorer" dans l'onglet "objects"
Et bien j'ai une arborescence avec des symbols de textlabel et de bouton etc ...
Pour l'instant j'aie les 4 fichiers suivants dans mon projet :
- Metric conversion.pro
- Form2.ui (representant mon interface graphique)
- form2.ui.h (avec l'algo pour les conversions)
- main.cpp

atlas
31/10/2004, 13h19
[réglé] Ok , je clos le topic pour plus de clarté dans ma cabesta .