web-dev-qa-db-fra.com

Qt a-t-il une interface en C?

J'ai trouvé des réponses contradictoires sur le Web - certains disent que oui, d'autres non. Je n'ai pas pu trouver de détails dans la documentation officielle de Qt. Alors, Qt a-t-il des liaisons C ou pas?

56
Ree

Réponse courte: non.

Si vous avez besoin d’une boîte à outils graphique complète pour C, vous pouvez utiliser GTK +. 

Pour utiliser Qt, vous devez disposer d'un compilateur C++. Mais cela ne signifie pas que votre "logique d'application" ne peut pas être écrite en C, compilée avec un compilateur C et reliée avec soin à la partie C++ (l'interface graphique avec Qt). Cette logique d'application peut être générique, pouvant être liée à d'autres exécutables (C-pur, C/C++ mixte, etc.) Tout dépend de ce dont vous avez besoin.

Qt est excellent pour le C++, cependant, et c'est une bonne raison de décider d'utiliser le C++ pour un projet particulier, même si vous souhaitez toujours conserver des parties en C.

56
Eli Bendersky

Malheureusement non, mais vous pouvez définir votre programme comme un ensemble de bibliothèques réalisant votre logique métier et les écrire en C, puis utiliser un peu de C++ pour relier ce que vous avez écrit en tant que bibliothèque avec une interface graphique utilisant QT.

C'est une bonne approche également, car vous pourrez plus tard réutiliser votre bibliothèque et implémenter de nombreux autres frontaux avec des kits d'outils ou des langues différentes!

20
Dacav

Non, Qt est C++. Mais vous pouvez simplement écrire du code de style C partout où il n'y a pas d'interaction/création d'éléments d'interface graphique et compiler le tout avec le compilateur C++ de votre choix.

18
Cory Petosky

Il existait auparavant une liaison appelée QtC, mais sa recherche révèle ce fil :

De Richard Dale:

J'avais l'habitude de maintenir les liaisons C qui étaient utilisées par les liaisons Objective-C et Qt #. Mais la bibliothèque Smoke est bien meilleure bien que ce ne soit pas une liaison C, et je mis au rebut les liaisons QtC pour utiliser de la fumée à la place.

La fumée est ici . Je n'ai pas trouvé de référence claire aux liaisons QtC, même si je me souviens de l'avoir entendue.

11
Sean McMillan

Je ne pense pas que ce soit le cas. Qt est toujours décrit comme une "bibliothèque de classes" et nécessite la compilation de compilateurs C++. Vous pouvez essayer d'écrire/trouver une DLL/interface qui encapsulera QT et fournira une API à une couche C.

4
Traveling Tech Guy

Vous pouvez toujours utiliser un compilateur C++ qui traduit simplement C++ en C, puis appelez les noms mutilés qu’il génère, etc. :-)

3
R..

Qt utilise le compilateur de méta-objets (MOC) pour faire fonctionner le signal et la magie de la fente (par exemple, faire des rappels de fonction en fonction du signal de l'utilisateur et des définitions de fente). Donc, Qt n’est pas vraiment C++, mais sa propre syntaxe, qui ressemble beaucoup à C++, mais avec des signaux et des slots. Cela rend le "c" externe inutile.

0
Brian