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 :

Qt : la découverte

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut Qt : la découverte
    Bonjour,

    Informaticien autodidacte ayant commencé dans les annees 80 avec le fameux PC1512 d'amstrad, je me debrouille en Delphi.

    Dans un souci de portabilité, je me lance dans le c++.

    Je voudrais faire un tutoriel de Qt vu par un debutant et avec la vision et les problemes d'un novice.

    Je commence mes questions de novice :

    1/ Quand on veut creer un projet 2 fichiers sources sont créés (main.cpp, NomProjet.cpp) 1 fichier en-têtes (NomProjet.h) et eventuellement 1 fichier formulaire (mainwindow.ui).
    => Expliquez les fonctions de ces differents fichiers s'il vous plait.

    2/ On rentre le code plutôt dans main ou dans NomProjet et pourquoi ?

    3/ Il n'y a pas de tuto detaille pour utilise le formulaire (mainwindow.ui) avec Design et y assigner du code. Quelqu'un veut il se lancer ?

    Je veux bien faire une synthese de tout cela + ce que je sais dejà (en programation, la gestion du positionnement des composants et de la fenetre principal) pour creer un tuto du novice...

    en attendant, je continu mes investigations et mon apprentissage...

    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Je vais te dire le peu que j'ai compris (là encore n'hésitez pas à me reprendre si c'est faux) :
    le fichier main.cpp renferme la fonction main qui est la première fonction appelée à l'exécution du programme.
    Apparemment ça crée une QApplication (là j'ai pas trop compris... bouh la honte , encore moins les 2 arguments)...
    Bref ta fenêtre principale est créee (appel du constructeur mainwindow ou du constructeur que tu veux).
    L'application s'exécute (instruction a.exec) : la fonction exec fera que ta fenêtre principale restera "vivante" tant que l'utilisateur n'aura pas cliqué sur le bouton fermer.
    A la fermeture de la fenêtre principale la fonction main() renvoie un entier (instruction return a.exec) : tu le verras lorsque tu compileras, il y aura marqué "le programme s'est terminé avec le code 0" si tout va bien.

    Pour ce qui est de la programmation perso je fais tout dans le mainwindow.cpp : c'est là que j'implémente toutes mes fonctions et les instructions à l'intérieur.
    Pour créer des "slots" à tes boutons tu vas dans le fichier *.ui, tu cliques droit sur un bouton et tu fais "aller au slot".
    Si après tu crées des objets qui n'ont rien à voir avec le design ui, alors tu dois toi-même connecter le signal et le slot entre eux avec la fonction QObject::connect().

    En espérant que ça t'aidera et en espérant ne pas avoir dit de bêtises.

    Bonne journée.
    Dernière modification par Invité ; 15/04/2011 à 11h36.

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Pour commencer, il y a un tuto pour les débutants Qt (je l'ai jamais lu mais il faut peut être avoir des bases en C++ pour le comprendre)

    On dit "Qt" et non "QT" (et on prononce "cute", "joli" en anglais)

    1/ Quand on veut creer un projet 2 fichiers sources sont créés (main.cpp, NomProjet.cpp) 1 fichier en-têtes (NomProjet.h) et eventuellement 1 fichier formulaire (mainwindow.ui).
    Ce n'est pas une obligation, c'est Qt Creator qui créer ce projet minimal compilable mais tu peux faire ce que tu veux.

    La seule obligation, c'est de créer une fonction main(), c'est elle qui est appelée lors du lancement de l'application. Tout le reste, c'est une question de choix d'organisation de ton code et de tes fichiers.

    2/ On rentre le code plutôt dans main ou dans NomProjet et pourquoi ?
    Tu fais ce que tu veux, ça dépend de ce que tu veux faire

    3/ Il n'y a pas de tuto detaille pour utilise le formulaire (mainwindow.ui) avec Design et y assigner du code. Quelqu'un veut il se lancer ?
    Il faut un tuto pour ça ?
    A priori, la documentation de QtCreator devrait être sufifsante, non ? (elle est en cours de traduction en français)

    Pour détailler le contenu du main.cpp proposé par QtCreator (mais ce n'est pas une obligation d'écrire une fonction main identique)

    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
    #include <QtGui/QApplication>
    #include "mainwindow.h"
     
    // définition de la fonction main ; il faut toujours utiliser le même
    int main(int argc, char *argv[])
    {
        // on créer un variable "a" de type "QApplication" en lui passant les 2 arguments "argc" et "argv"
        // c'est comme ça, il faut pas essayer de comprendre pour le moment, QApplication est conçu comme ça
        // Le type "QApplication" est un type standard de Qt définit dans le fichier <QtGui/QApplication> donc on inclut ce fichier
        QApplication a(argc, argv);
     
        // On crée une variable "w" de type "MainWindow"
        // Le type "MainWindow" n'est pas un type définit par Qt mais pas l'utilisateur
        // dans le fichier "mainwindow.h" donc on inclut ce fichier
        MainWindow w;
     
        // Le type "MainWindow" hérite de QWidget (cf le fichier "mainwindow.h") donc on peut l'afficher avec la fonction show()
        w.show();
     
        // on lance la boucle de gestion des évènements de Qt avec la fonction exec()
        // puis à la fin de celle-ci (lorsque l'on quitte l'application), on retourne le code d'erreur
        return a.exec();
    }
    Pour le contenu des fichiers "mainwindow.h" et "mainwindow.cpp", c'est une simple déclaration d'une classe, héritant de "QMainWindow", avec redéfinition d'un constructeur et du destructeur et la macro "Q_OBJECT" spécifique à Qt pour la gestion des signaux/slots. C'est du C++ object de base.


    J'espère que c'est plus clair comme ça

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut
    Merci pour toutes ces precisions,

    juste pour le formulaire,

    ce n'est pas si simple que vous le dite :

    Mettre dans la fenetre un classeur qui prend toute la fenetre quelle que soit sa dimension, y mettre des composant dans une grille eux memes autodimensionnables est a priori plus facile a faire par code que par le formulaire quand tu es novice en tout cas et malgrès la doc que j'avoue bien implementé.
    Est-ce que l'idee d'un tuto novice, en faisant une synthese de ce que j'apprend vous parait une bonne idee ?

    Cordialement

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pourquoi pas ? En tout cas je ne suis pas contre. Enfin c'est toi qui vois... Tu compte le faire toi ?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Par défaut
    Bonjour,
    je pense que ce n'est pas si difficile que ça, tu peux placer ton classeur dans le formulaire en 3 clics:
    - glisser déposer le classeur dans le formulaire
    - clic sur le formulaire pour le selectionner
    - clic sur le layout désiré (vertical, horizontal ou grid) dans la barre d'outil
    et le tour et joué.

  7. #7
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut
    Bonjour,

    Pour repondre a abdou57, non ça ne marche pas, j'ai essaye, mais la solution que l'on m'a donnee en ligne de commande fonctionne très bien .

    Pour repondre gizmo27, je pense qu'un tuto avec une approche amateur servirait des gens comme moi qui programme pour eux et n'ont pas un environnement d'informaticiens. Des questions evidentes deviennent abstraites "de l'autre coté de la barriere" mais ce n'est pas pour cela qu'on ne les comprends pas une fois que l'on a la reponse. J'en ai fait l'experience sous Delphi!!! et j'ai perdu enormement de temps a comprendre des fois des choses de bases que tout le monde semblaient connaitre.

    je vais commencer un tuto en parallele de mon apprentissage, et je verrais bien...

    Cordialement

Discussions similaires

  1. Tres tres débutant(découverte de l'Oracle)
    Par argon dans le forum Oracle
    Réponses: 14
    Dernier message: 19/03/2006, 19h14

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