Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1689 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  QT vs STL/Boost

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

QT vs STL/Boost

n°1609042
gee
Bon ben hon
Posté le 06-09-2007 à 19:30:49  profilanswer
 

Salut,
 
je suis en train de développer une petite application en C++. Jusqu'alors c'était tout en mode console, codé en C++ avec la STL et Boost mais maintenant j'ai rajouté une UI en QT et je me demande si mixer QT avec la STL est une bonne chose. Pas mal de classes qui me sont nécessaires existent des 2 cotés et je ne sais pas trop ce qui est le plus malin.
 
Pour l'instant je limite le QT à la partie UI, mais QT n'est plus seulement un framework graphique c'est un framework de programmation complet donc ce n'est pas forcément intelligent.
 
Après j'ai toujours besoin de Boost pour Spirit là, je n'ai rien vu d'équivalent dans QT, pour le reste probablement pas.
 
 
 
Des avis?
 
Merci


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
mood
Publicité
Posté le 06-09-2007 à 19:30:49  profilanswer
 

n°1609044
IrmatDen
Posté le 06-09-2007 à 19:45:40  profilanswer
 

Salut,

 

Concernant la SL vs Qt (et non pas QT :)), tout dépend de la portabilité que tu veux obtenir. Le problème étant que certaines implés de la SL sont cassés sur certaines plate-formes, et que TT garanti le bon fonctionnement des conteneurs sur toute plateforme listée comme supportée.
Concernant Spirit, il n'y a effectivement aucun équivalent dans Qt.

Message cité 1 fois
Message édité par IrmatDen le 06-09-2007 à 19:46:20
n°1609057
Joel F
Real men use unique_ptr
Posté le 06-09-2007 à 20:12:45  profilanswer
 

l'ordre de préférence est :
 
BOOST >> QT >> STL si tu fais du GUI
sinon BOOST >> STL
 
:)

n°1609059
gee
Bon ben hon
Posté le 06-09-2007 à 20:19:01  profilanswer
 

IrmatDen a écrit :

Salut,
 
Concernant la SL vs Qt (et non pas QT :)), tout dépend de la portabilité que tu veux obtenir. Le problème étant que certaines implés de la SL sont cassés sur certaines plate-formes, et que TT garanti le bon fonctionnement des conteneurs sur toute plateforme listée comme supportée.
Concernant Spirit, il n'y a effectivement aucun équivalent dans Qt.


 
Pour l'instant je fais du win32 sous VS donc portabilité pas importante (bien que mon code est standard). C'est plus pour me donner des bonnes habitudes que je demande :)
 

Joel F a écrit :

l'ordre de préférence est :
 
BOOST >> QT >> STL si tu fais du GUI
sinon BOOST >> STL
 
:)


 
Tu as des raisons particulières pour ces classements? je pense essentiellement à Boost >> Qt dans le cas d'une GUI.
Qui plus est, tu es donc contre utiliser Qt si pas de GUI?
 
 
Merci :hello:


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1609069
Dumbledore
Posté le 06-09-2007 à 20:42:41  profilanswer
 

Boost ne propose pas, je crois de moyen de faire de GUI, donc, l'assertion "Boost >> Qt" est fausse si tu veux faire de la Gui. Si tu veux faire uniquement du texte, alors, c'est probablement vrai.
 
Sinon, boost est assez portable (en tout cas, ça existe sous Linux et *BSD) et je crois que KDE4, basé sur Qt4 utilise également boost pour certaines parties, donc...
Le mieux est de choisir, quand tu as la choix entre les deux celui qui te convient le mieux :
ce que tu veux faire / fonctionnalités offertes
ton niveau / complexité de l'API

n°1609073
Joel F
Real men use unique_ptr
Posté le 06-09-2007 à 20:49:06  profilanswer
 

Dumbledore a écrit :

Boost ne propose pas, je crois de moyen de faire de GUI, donc, l'assertion "Boost >> Qt" est fausse si tu veux faire de la Gui. Si tu veux faire uniquement du texte, alors, c'est probablement vrai.


 
je parlait des API hors GUI. OFC qu'y a pas de gui dans boost :o
dooonc, on reprend :
 
une appli Qt qui a besoin de classes de haut niveau non-gui related : boost en prems puis les classes QT natives puis STL

n°1609075
IrmatDen
Posté le 06-09-2007 à 21:01:48  profilanswer
 

gee a écrit :

Qui plus est, tu es donc contre utiliser Qt si pas de GUI?


Ma petite opinion sur cette question: tout dépend de ce que tu veux faire; sans gui, tu as accès à tout les modules ne dépendant pas de QtGui, dont certains n'ont pas d'équivalent dans boost (network, sql ou script pour ne citer qu'eux).
Bien sûr, tout peut être assemblé à partir d'autres bibliothèques, donc c'est vraiment dépendant de ce que tu cherches à faire.

n°1609085
gee
Bon ben hon
Posté le 06-09-2007 à 21:35:03  profilanswer
 

bah je cherche à bien coder :D


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1609090
Joel F
Real men use unique_ptr
Posté le 06-09-2007 à 21:51:19  profilanswer
 

IrmatDen a écrit :


Ma petite opinion sur cette question: tout dépend de ce que tu veux faire; sans gui, tu as accès à tout les modules ne dépendant pas de QtGui, dont certains n'ont pas d'équivalent dans boost (network, sql ou script pour ne citer qu'eux).


 
bah  
 
network : raknet
sql : sql++
scritp : lua++
 
ca m'embete de trimballer els dll QT ou un exe maousse rien que pour lire du xml par exemple.

n°1609092
gee
Bon ben hon
Posté le 06-09-2007 à 21:54:10  profilanswer
 

et le memory footprint? embarquer du Qt ca coute cher?


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
mood
Publicité
Posté le 06-09-2007 à 21:54:10  profilanswer
 

n°1609191
BenO
Profil: Chercheur
Posté le 07-09-2007 à 09:41:12  profilanswer
 

asio pour le network ? :D

n°1609245
IrmatDen
Posté le 07-09-2007 à 11:22:21  profilanswer
 

Joel F a écrit :


 
bah  
 
network : raknet
sql : sql++
scritp : lua++
 
ca m'embete de trimballer els dll QT ou un exe maousse rien que pour lire du xml par exemple.


D'où la dernière phrase de mon post et le fait que j'insiste sur le fait que ça dépende du contexte ;) (admettons un bon vieux serveur qui n'est destiné qu'à des applis Qt)

n°1609247
Dumbledore
Posté le 07-09-2007 à 11:34:56  profilanswer
 

gee a écrit :

et le memory footprint? embarquer du Qt ca coute cher?


Ca occupe 37 Mo sur mon disque (sous Linux).

n°1609254
IrmatDen
Posté le 07-09-2007 à 11:52:24  profilanswer
 

C'est pas en mémoire ça, c'est le contenu du répertoire bin avec dlls de debug/release + outils.
Mais c'est vrai que Qt est relativement lourd de toute façon (tout dépend des modules utilisés). Pour une petite appli utilisant core/gui/sql/xml (plus quelques plugins satellites) et sans y charger de base sqlite, j'atteinds 12 megs de charge (17 en chargeant un fichier d'environ 1 megs).
Pour de plus grosses applis, je ne saurais te dire :/

n°1609534
gee
Bon ben hon
Posté le 07-09-2007 à 18:30:39  profilanswer
 

ok je vois ce que vous voulez dire.

 

Mais c'est chaud alors d'être un bon programmeur, faut connaître plein de frameworks / bibliothèques :'(

 

Bon suivant vos commentaires je pense que je vais rester en Boost/STL dans le core, et Qt dans la partie GUI, mais ca fait bizarre je trouve de se trimballer des QString par endroit et des std::string aillieurs.

 

Qt ca a l'air sympa sinon, bien que parfois c'est la grosse galère je trouve pour comprendre comment faire un truc tout simple (genre j'ai du passer plus d'une demi journée sur QTableWidget).

 

Merci

Message cité 1 fois
Message édité par gee le 07-09-2007 à 18:31:51

---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1609560
IrmatDen
Posté le 07-09-2007 à 19:37:00  profilanswer
 

gee a écrit :

Mais c'est chaud alors d'être un bon programmeur, faut connaître plein de frameworks / bibliothèques :'(


De ce que je lis à droite à gauche, être un bon programmeur, c'est plutôt savoir s'adapter, et donc savoir apprendre/évoluer, ceci allier à de bons principes de conceptions, d'écritures etc... Le travail de toute une vie en somme :D

gee a écrit :

Bon suivant vos commentaires je pense que je vais rester en Boost/STL dans le core, et Qt dans la partie GUI, mais ca fait bizarre je trouve de se trimballer des QString par endroit et des std::string aillieurs.


Pour cet exemple, j'utilise QString un max parce que ça t'apporte une localisation extrêmement facile, alors que les string ne gère absolument pas divers codecs. Donc, encore une fois, utilise ce qu'il faut où il faut :) (Genre, si tu as des chaînes dans le coeur d'un soft utilisant de toute façon Qt, et que ces chaînes sont susceptibles d'être traduite/affichée, alors autant utiliser QString directement, tu éviteras des conversions internes.)

n°1609564
gee
Bon ben hon
Posté le 07-09-2007 à 19:47:56  profilanswer
 

Bah sinon au lieu d'isoler le GUI je pourrais isoler Spirit et envoyer du QT sur tout le reste.


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1609597
Joel F
Real men use unique_ptr
Posté le 07-09-2007 à 21:09:22  profilanswer
 

ca parait mieux

n°1609617
gee
Bon ben hon
Posté le 07-09-2007 à 23:14:18  profilanswer
 

et pourquoi :??:


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1609650
Joel F
Real men use unique_ptr
Posté le 08-09-2007 à 09:37:43  profilanswer
 

Rencarde toi sur le pattern Model-View-Controller ;)

n°1609765
gee
Bon ben hon
Posté le 09-09-2007 à 00:07:10  profilanswer
 

je connais déjà mais je ne vois pas lke rapport là.


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1609781
Joel F
Real men use unique_ptr
Posté le 09-09-2007 à 08:54:28  profilanswer
 

c'est toujours une bonne idée de séparer son interface de son code applicatif.
Dans le meilleur des mondes, tu devrais pouvoir commencer par ecrire ton code en console (sauf ofc besoin impérieux de GUI pr rentrer les données et encore) et le coder en utilisant des trucs standards (STL+BOOST).
Une fois cet applicatif fini, tu atatques la partie GUI (avec QT) et tu utilises deux-trois adaptateurs pr integrer ton code applicatif dedans.
 
Au final, l'applicatif n'utilise pas de QT, et la GUI n'utilise que ça.

n°1609795
gee
Bon ben hon
Posté le 09-09-2007 à 12:41:49  profilanswer
 

bah c'est bien ce que je disais alors :)
Quand j'ai dis isoler Spirit c'est un peu l'inverse de ce que tu proposes.
 
Bon par contre ce qui est embétant c'est que j'ai écrit une fonction qui travaille sur du QString et que j'ai besoin d'exactement la même chose pour des std::string :'(


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1609853
BenO
Profil: Chercheur
Posté le 09-09-2007 à 19:29:45  profilanswer
 

elle fait quoi cette fonction ? :O

n°1609876
Joel F
Real men use unique_ptr
Posté le 09-09-2007 à 21:46:46  profilanswer
 

fonction template ;)


Message édité par Joel F le 09-09-2007 à 21:46:53
n°1609879
gee
Bon ben hon
Posté le 09-09-2007 à 21:57:16  profilanswer
 

la fonction me récupere le nom d'un fichier à partir du filepath.
Je pourrais le faire en template j'imagine oui, mais les 2 classes n'ont pas les mêmes noms de fonctions donc ca fera autant de code que 2 fonctions je pense ;(


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1609882
Joel F
Real men use unique_ptr
Posté le 09-09-2007 à 22:14:59  profilanswer
 

"la fonction me récupere le nom d'un fichier à partir du filepath. "
utilise boost::filesystem ;)

n°1609883
gee
Bon ben hon
Posté le 09-09-2007 à 22:17:06  profilanswer
 

Je vais regarder merci mais ca parait gros pour les 4 lignes de code dont j'ai besoin.
De plus ca ne fonctionnera toujours pas avec mes QString :(
 
 
Merci :jap:


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1609949
IrmatDen
Posté le 10-09-2007 à 10:33:02  profilanswer
 

Pour les QString, tu peux utiliser QFileInfo, ça te permet d'obtenir pas mal de renseignements sur un fichier, dont ce que tu cherches. (Si bien sûr tu restes sur QString, ou que tu as réellement besoin des 2.)

n°1610025
Joel F
Real men use unique_ptr
Posté le 10-09-2007 à 12:38:52  profilanswer
 

en fait, le truc c'est de voir quid de qstring ou de string permets de couvrir le plus de besoins. En gros, minimise les changements

n°1610135
gee
Bon ben hon
Posté le 10-09-2007 à 16:01:28  profilanswer
 

bah hors UI et hors Spirit pour l'instant ca m'est égal je pense.
Par contre si QFileinfo est plus petit à comprendre que Boost::Filesystem ca m'interessera plus :)


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1610216
gee
Bon ben hon
Posté le 10-09-2007 à 19:37:24  profilanswer
 

bon QFileInfo fait exacement ce que je veux, mais ca me coute un objet en plus, je prend mais je trouve cela dommage d'avoir un objet pour une fonction :(


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1610243
gee
Bon ben hon
Posté le 10-09-2007 à 20:37:55  profilanswer
 

Sinon vous savez comment ouvrir un Browser depuis QT?
J'ai trouvé quelques méthodes, mais c'est souvent non portable, et même si mon appli n'a pas pour but de l'être j'aimerai toujours avoir un code portable pour moi même...
 
Merci :)


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1610251
IrmatDen
Posté le 10-09-2007 à 20:52:37  profilanswer
 

Depuis Qt4.32, tu as accès à QDesktopServices, qui ne s'occupe pas que du browser.
Sinon, ce n'est pas inclus dans Qt. Si tu veux vraiment te restreindre au browser (ou plutôt "peux te restreindre..." ), il y a une fonction ici qui est sensée faire ça sur Win, OSX et Linux. Je ne l'ai pas testé, mais à vue de nez, ça devrait fonctionner (bien que ne connaissant rien à OSX...).
 
Edit: lien


Message édité par IrmatDen le 12-09-2007 à 20:58:12
n°1610266
gee
Bon ben hon
Posté le 10-09-2007 à 21:06:11  profilanswer
 

C'est parfait QDesktopServices, merci beaucoup.
Je cherchais depuis vendredi sur "qt open browser" mais je n'avais trouvé que des vieux hacks en QT 2.XX.
Tu connaissais ou bien tu as trouvé là? et si oui par quel moyen?
 
 
Merci :jap:


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1610272
IrmatDen
Posté le 10-09-2007 à 21:11:41  profilanswer
 

Je connaissais déjà :)

n°1610434
gee
Bon ben hon
Posté le 11-09-2007 à 00:40:26  profilanswer
 

Encore une ptite question vu que tu as l'air de t'y connaître ^^.
J'ai un QTableWidget, mais au niveau du header j'ai 3 divisions alors que moi je n'en veux que 2 (et column me retourne bien sûr 2).

 

Je ne comprend pas trop ce qui se passe et de nouveau je n'ai rien trouvé.
A part cela c'est fini je pense, bon par contre j'ai clairement aucun talent en design :D

 

edit : bah en fait un setResizeMode(QHeaderView::Stretch); a suffit donc c'est cool :)

 

Merci


Message édité par gee le 11-09-2007 à 00:46:40

---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1610758
gee
Bon ben hon
Posté le 11-09-2007 à 19:37:33  profilanswer
 

arf j'ai compilé mon appli en static pour éviter de devoir me trimballer les dlls de QT et autres, et hop 4 Mo à la place des 130Ko de base (que je trouvais déjà enorme).
1.4 Mo en UPX, c'est déjà mieux mais je ne suis pas convaincu que j'ai le droit de me trimballer de l'UPX...


Message édité par gee le 11-09-2007 à 19:40:16

---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1610760
Joel F
Real men use unique_ptr
Posté le 11-09-2007 à 19:41:46  profilanswer
 

ne aps oublier un coup de strip ;)

n°1610766
gee
Bon ben hon
Posté le 11-09-2007 à 20:22:54  profilanswer
 

tu veux virer les espaces blancs dans quoi? je ne comprend pas trop.


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  QT vs STL/Boost

 

Sujets relatifs
boost::filesystem utilisation de copy_file[c++] intérêt de cette classe? Réécriture de la STL...
[boost::thread] Comment limiter le nombre de threads simultanésintérêt de boost::multi_array ?
[WinCE] Probleme lors du linkage avec la STL[résolu][boost::thread] thread à partir d'une fonction à argument?
[C++] STL - list : doit contenir uniquement des objets dynamiques ??Boost::Spirit
boost::bind, pourquoi this ne marche pas?[BOOST] utilisation de shared_array
Plus de sujets relatifs à : QT vs STL/Boost


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR