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

C++ Discussion :

Quelle bibliothèque pour du GUI ?


Sujet :

C++

  1. #121
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    C'est donc bien ce qui me semblait : signals et slots sont bien plus que de simples macros standards. L'utilisation le la bibliothèque Qt requiert l'utilisation d'un préprocesseur non-standard.
    En conséquence, un compilateur C++ ne peut en aucun cas traiter un code Qt de façon native. Et il en sera de même pour un analyseur de code.

    Quoi que…
    Je réfléchis un peu. Puisque signals et slots sont #définies de façon standard dans le code, un préprocesseur standard n'y verra que du feu, et ceci :
    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
    #include <QObject>
     
     class Counter : public QObject
     {
         Q_OBJECT
     
     public:
         Counter() { m_value = 0; }
     
         int value() const { return m_value; }
     
     public slots:
         void setValue(int value);
     
     signals:
         void valueChanged(int newValue);
     
     private:
         int m_value;
     };
    … deviendra cela :
    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
    //inclusion de l'en-tête QObject
     
     class Counter : public QObject
     {
         //remplacement de la macro Q_OBJECT par sa définition
         //(hors MOC, admettons que ce soit équivalent à du code vide, comme slots)
     
     public:
         Counter() { m_value = 0; }
     
         int value() const { return m_value; }
     
     public:
         void setValue(int value);
     
     protected:
         void valueChanged(int newValue);
     
     private:
         int m_value;
     };
    … ce qui est du code tout à fait standard, qui passera tout à fait l'analyse syntaxique. Le résultat de l'analyse sera donc correct… à condition que l'analyse sémantique n'aille pas trop loin (par exemple tracer précisément l'appel au callback) !

    Bon bon bon… Qt remonte un peu dans mon estime
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  2. #122
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Merci pour le lieu commun, mais tout ce qui n'est pas Common Lisp le "réimplémente de manière bugguée et inefficace"...
    C'était en effet une référence à cette fameuse citation, pour ceux qui n'avaient pas compris.
    Citation qui est bien entendu de l'humour dans une certaine mesure, de nombreuses choses, en particulier celles qui n'utilisent pas de typage dynamique et ce genre-là, ne réimplémentent pas Common Lisp.
    On pourrait néanmoins dire que GObject, par contre, en réimplémente vraiment pas mal.
    Boost ftw

  3. #123
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Florian Goo Voir le message
    C'est donc bien ce qui me semblait : signals et slots sont bien plus que de simples macros standards. L'utilisation le la bibliothèque Qt requiert l'utilisation d'un préprocesseur non-standard.
    En conséquence, un compilateur C++ ne peut en aucun cas traiter un code Qt de façon native. Et il en sera de même pour un analyseur de code.

    Quoi que…
    Je réfléchis un peu. Puisque signals et slots sont #définies de façon standard dans le code, un préprocesseur standard n'y verra que du feu, et ceci :

    … ce qui est du code tout à fait standard, qui passera tout à fait l'analyse syntaxique. Le résultat de l'analyse sera donc correct… à condition que l'analyse sémantique n'aille pas trop loin (par exemple tracer précisément l'appel au callback) !

    Bon bon bon… Qt remonte un peu dans mon estime
    Mais comme les builders gèrent directement moc, ui et autres, on n'y voit que du feu
    Un analyseur de code ne verra pas grand chose, et il n'en a pas grand chose à faire, à vrai dire. Un connect ne fait que renseigner une table d'appel. Quand tu actives un signal, en fait tu exécutes un code généré par moc qui va chercher dans la table d'appel ce qu'il va faire. Rien de plus.

  4. #124
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Je me demande aussi comment va évoluer Qt avec le prochaine standard aussi.
    Comme je suis en auto formation JAVA... (no comment)
    je regarde un peu QtJambi en parallèle.
    Ils n'utilisent plus moc. Java fournie ce qu'il faut en meta donné.
    Du coup les signal sont des class template et les slot sont appelé par leur signature :
    http://doc.trolltech.com/qtjambi-4.4...sandslots.html

    N'y aurait il pas possibilité de faire la même choses avec le prochain standard?

    Le passage de Qt en java semble avoir su tirer partie de ce qui existe comme les thread, le méta donné,...

    Vue la quantité de nouveauté du prochain standard, Qt subira peut être un mutation équivalente dans quelques années.

  5. #125
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Je ne pense pas, car il n'y aura pas de réflexion dans le prochain standard, contrairement à ce qu'on trouve en Java.

  6. #126
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    La version java n'est pas non plus type-safe, ça marche avec des Object...
    Boost ftw

  7. #127
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par loufoque Voir le message
    La version java n'est pas non plus type-safe, ça marche avec des Object...
    c'est à dire?

  8. #128
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Le défaut des signaux Qt (en C++/MOC donc) c'est qu'il ne sont pas type-safe.
    Là, avec Java, on en aurait l'illusion à cause des génériques, sauf que les génériques de Java c'est un peu du vent, en fait ça marche avec le type de base (Object) et des tests à l'exécution. Donc c'est pas mieux.
    Boost ftw

  9. #129
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    À ma connaissance, ça n'est pas ce que signifie "type-safe".
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #130
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    type-safe signifie qui ne génère pas d'erreur à l'exécution à cause de mauvais types.
    Boost ftw

  11. #131
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Il me semblait que ça voulait seulement dire que rien ne pouvait pointer vers un mauvais type, et que si erreur il y a, elle arrive *avant*. Java et C# (sans "unsafe") correspondent à cette définition de type-safe...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #132
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    C'est pas plutôt type sound ça ?
    Boost ftw

  13. #133
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je ne sais pas, c'est la première fois que je vois ce terme...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #134
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Le gros problème des signal/slots QT, c'est qu'ils ne sont pas vérifiés à la compilation, et très sujets aux erreurs de frappe (problème qui existe moins quand on passe par le designer, c'est sûr). Pas sûr que ce soit un problème de type-safety à proprement parler. Mais ça fait des erreurs au runtime.

    Je pense qu'il y aurait moyen de les réimplémenter, avec des templates, pour faire faire ce boulot de vérification par le compilateur, mais je n'ai jamais creusé plus loin pour l'instant...

  15. #135
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Oui, ce moyen, c'est de ne plus utiliser MOC mais des templates...
    Comme fait GTKmm, par exemple.
    Boost ftw

  16. #136
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    D'un autre côté,
    qmake -project && qmake && make
    ce n'est pas dramatique par rapport à
    make

  17. #137
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Tu n'utilises pas forcément un make tout bête.
    Ça peut être plus ou moins difficile à intégrer en fonction du système de build utilisé.
    Boost ftw

  18. #138
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Tu n'utilises pas forcément un make tout bête.
    Ça peut être plus ou moins difficile à intégrer en fonction du système de build utilisé.
    Tu exagères un peu. Les vrais outils actuels gèrent très bien Qt.

Discussions similaires

  1. Quelle bibliothèque pour gérer des contours actifs ?
    Par khayyam90 dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 06/12/2006, 13h58
  2. [VB6] Quelle bibliothèque pour Keypress??
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 02/06/2006, 12h04
  3. [C#][OpenGL] Quelle bibliothèque pour utiliser OpenGL en C#
    Par glKabuto dans le forum Windows Forms
    Réponses: 6
    Dernier message: 23/05/2006, 13h56
  4. Quelle Bibliothèque pour une IA d'un RTS ?
    Par methos69 dans le forum Bibliothèques
    Réponses: 9
    Dernier message: 11/02/2005, 10h28
  5. Quelle lib pour vos GUI?
    Par mandale dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 03/08/2004, 17h58

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