Creación de aplicaciones programables
Qt ofrece soporte para la programación de aplicaciones con JavaScript. Las siguientes guías y referencias cubren aspectos de la programación con JavaScript y Qt.
Clases de scripting
Las siguientes clases añaden capacidades de scripting a las aplicaciones Qt.
Entorno para evaluar código JavaScript | |
Opera sobre tipos primitivos en la semántica de JavaScript | |
Actúa como contenedor para tipos de datos Qt/JavaScript | |
Iterador estilo Java para QJSValue |
Uso básico
Para evaluar código script, se crea un QJSEngine y se llama a su función evaluate(), pasando el código script (texto) a evaluar como argumento.
El valor de retorno será el resultado de la evaluación (representado como un objeto QJSValue ); éste puede convertirse a tipos C++ y Qt estándar.
Las propiedades personalizadas pueden ponerse a disposición de los scripts registrándolas con el motor de scripts. Esto se hace más fácilmente estableciendo propiedades del Objeto Global del motor de scripts:
engine.globalObject().setProperty("foo", 123);qDebug() << "foo times two is:" << engine.evaluate("foo * 2").toNumber();
Esto coloca las propiedades en el entorno de script, haciéndolas disponibles para el código de script.
Poner un QObject a disposición del motor de scripts
Cualquier instancia basada en QObject puede estar disponible para su uso con scripts.
Cuando se pasa un QObject a la función QJSEngine::newQObject(), se crea un objeto envoltorio de Qt Script que puede utilizarse para hacer que las señales, ranuras, propiedades y objetos hijo de QObject estén disponibles para los scripts.
Aquí hay un ejemplo de cómo hacer que una instancia de una subclase QObject esté disponible para el código script bajo el nombre "myObject":
QJSEngine engine; QObject *someObject = new MyObject; QJSValue objectValue = engine.newQObject(someObject); engine.globalObject().setProperty("myObject", objectValue);
Esto creará una variable global llamada myObject en el entorno del script. La variable sirve como proxy del objeto C++ subyacente. Tenga en cuenta que el nombre de la variable de script puede ser cualquiera; es decir, no depende de QObject::objectName().
Implicaciones para la seguridad de las aplicaciones
El modelo de seguridad del scripting de aplicaciones con JavaScript sigue el mismo modelo que para el código C++: el usuario instala scripts para ejecutar en los que confía del mismo modo que instala aplicaciones Qt.
Para preservar la confianza de los usuarios, los desarrolladores de aplicaciones no deben evaluar código JavaScript arbitrario. El sandbox del motor JavaScript es sólo una barrera semántica. El script se evalúa en el mismo proceso y con los mismos privilegios que el resto de la aplicación y comparte la misma memoria. Como consecuencia, los objetos C++ expuestos a los scripts son accesibles sin guardias de seguridad adicionales.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.