2010-07-12 14 views
10

Je commence juste le développement C++ en utilisant Qt. Cependant, je suis également intéressé par l'utilisation de Lua pour scripter mon application, étant donné divers articles indiquant sa vitesse de développement (facilité) pour l'écriture du workflow/ui/colle d'une application. Cependant, hors de la boîte, Qt ne le supporte pas, mais inclut QtScript.Lua avec Qt est-il facile, comparé à QtScript?

Ma question est fondamentalement devrais-je essayer d'utiliser Lua avec Qt pour développer une application commerciale, ou coller avec QtScript disponible dans le SDK? Principalement une question de vitesse de développement par rapport à la stabilité, je suppose.

Répondre

13

Je l'ai rencontré le même dilemme. Je préfère beaucoup Lua à ECMAScript pour ce genre de tâches. Cependant, aussi facile que cela puisse être d'écrire des liaisons Lua, le niveau d'intégration fourni par QtScript donne beaucoup de possibilités dès la sortie de la boîte. Cela inclut les liaisons aux classes dérivées QObject intégrées ainsi que vos propres classes qui héritent de QObject et/ou QScriptClass. Donc, si vous voulez seulement écrire ou configurer vos propres classes indépendamment de la fonctionnalité Qt, alors j'irais avec Lua. Toutefois, si vous souhaitez principalement interagir avec des types basés sur QObject, QtScript réduira considérablement votre temps de développement initial. Le meilleur des deux mondes serait l'option d'analyser les scripts Lua avec une implémentation alternative QScriptEngine. J'ai eu l'intention de se pencher sur la difficulté qui serait d'intégrer pendant un certain temps ...

MISE À JOUR: QtLua est toujours activement maintenue et pourrait résoudre votre problème directement.

1

Javascript est si bien intégré en ce moment, si vous voulez intégrer lua vous aurez probablement un effort initial beaucoup plus élevé. Aussi l'implémentation actuelle (4.6) utilise le moteur webkit javascript, ce qui signifie qu'il est incroyablement rapide.

J'ai utilisé Javascript et Qt pour un projet en cours et il était assez facile de transporter des données dans les deux cas (Qt Javascript, et l'inverse)