Page 1 of 1

Utilisation classe Qt

PostPosted: Thu 24 Mar 2016 08:15
by victorien
Bonjour
Travaillant avec Qt, j'aimerais utiliser certaines classes de Qt pour réaliser héritages , dépendances, etc...
Quelles sont les possibilités autres que de créer des classes externes au coup par coup : Travail long et fastidieux.
Peut être l'importation d'un module existant déjà ? ou une procédure que je n'ai pas découverte ou comprise ?
Existent t-ils des projets exemples d'intégrations avec Qt que je pourrais utiliser.
Je débute et mon vocabulaires et connaissances sont encore très parcellaires. Veuillez m'en excuser.
Merci
Victorien

Re: Utilisation classe Qt

PostPosted: Thu 24 Mar 2016 14:38
by Bruno Pagès
Bonjour,

Si vous voulez juste avoir une liste de classes Qt déclarées externe le mieux est de faire un projet Qt les contenant une fois pour toute puis de l'importer (import project as library, voir http://www.bouml.fr/doc/index_package.html) dans vos autres projets où vous avez besoin des classes Qt. L'avantage de l'import project as library est que ce qui est importer ainsi ne peut être modifié par erreur, et que vous pouvez faire des mises à jour

Pour faire ce projet Qt vous si seules les noms de ces classes vous intéresse (c.a.d. pas de membres ou autre détails) vous pouvez le faire à la main et peut être en plusieurs fois au fur et à mesure qu'une classe est importante pour vous, en modific

L'autre solution est d'utiliser le reverse, par exemple en reversant /usr/include/Qt si vous êtes sous Linux, mais vous aurez tous les membres ce qui risque de vous gêner. Vous pouvez aussi extraire automatiquement via grep et autre awk sous Linux/Unix la liste des classes des sources de Qt pour ne produire que des formes "class XXX {}" dans un/des fichiers que vous reverser ensuite pour n'avoir que les classes sans leurs membres.
Pour passer les classes en externe alors qu'il y en beaucoup moi j'écrirai un plug-out, en fait ce plug-out pourrait tout aussi bien chercher les classes dans les sources de Qt et les déclarer externe directement ;)

Si vous utilisez le reverse sur les sources de Qt il faut éliminer les macros QT_xxx et Q_xxx qui sans cela produisent des erreurs de syntaxe, soit vous faites une copie des sources de Qt pour les éliminer via sed ou autre, soit vous utilisez la propriété #file au reverse (voir http://www.bouml.fr/doc/index_cppreverse.html ) indiquant un fichier contenant quelque chose comme (je n'ai pas vérifié que c'est suffisant) :
Code: Select all
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE=//
Q_OBJECT
Q_PROPERTY=//
QT3_SUPPORT_CONSTRUCTOR
QT_END_NAMESPACE
QT_END_HEADER
Q_DISABLE_COPY=//
Q_COMPAT_EXPORT
Q_SIGNALS
Q_SLOTS


Qu'est-ce qui vous tente le plus ?
Vous sentez-vous d'attaque pour écrire le simple plug-out que je propose de faire ?
Quelle version de Qt utilisez-vous ?

Re: Utilisation classe Qt

PostPosted: Fri 25 Mar 2016 06:16
by victorien
Merci pour ces précieux conseils. Je vais les étudier et les essayer.
Pour la solution plugout, cela me semble encore trop abstrait après la lecture du manuel de référence. Il faut que je trouve une exemple concret pour bien comprendre.
Je vous dirais mon choix ultérieurement.

Re: Utilisation classe Qt

PostPosted: Fri 25 Mar 2016 07:46
by Bruno Pagès
Faire un plug-out n'est pas si compliqué

A la limite je pourrais très bien le faire (avec une implémentation basée sur Java et non C++ qui demande plus pour compiler) et l'expliquer, un peu comme j'avais fait fait il y a longtemps avec le plug-out de tri