欢迎来到天天文库
浏览记录
ID:37713583
大小:24.57 KB
页数:5页
时间:2019-05-29
《Qt 脚本文档翻译》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Qt脚本Qt支持应用程序利用ECMAScript编程。下面的说明涵盖了用EMCAScript和Qt编程的各个方面。脚本类下面的类可以为qt程序添加脚本的能力QScriptClass定义qt脚本对象自定义行为的接口QScriptClassPropertyIterator自定义qt脚本对象的迭代器QScriptContext表示一个qt脚本函数的调用QScriptContextInfo关于QScriptContext的其它一些信息QScriptEngineqt脚本代码执行环境QScriptEngineAgent报告QScript
2、Engine执行的附属事件接口QScriptEngineDebuggerQScriptEngine调试器QScriptProgram装入一个qt脚本程序QScriptStringQScriptEngine内部字符串的句柄QScriptSyntaxCheckResult脚本语法校验结果QScriptValueqt脚本数据类型的容器QScriptValueIteratorjava风格的QScriptValue迭代器QScriptable从qt的C++成员函数访问qt脚本环境脚本语言概述略基本用法要执行脚本代码,需要创建QScri
3、ptEngine并调用它的evalute()函数,将脚本代码作为参数传入。【代码】返回值时执行结果(以QScriptValue对象表示);可以被转换成标准c++和qt类型。自定义的属性通过脚本引擎注册后可以通过脚本访问。这最简单的做法是将属性作为脚本引擎的全局对象。【代码】这么做就把属性放到了脚本环境中,因此可以被脚本代码访问。时脚本引擎可以访问QObject任何派生自QObject的实例均可被脚本使用。当一个QObject传递给QScriptEngine::newQObject()函数时,创建了一个qt脚本包装对象,该对象
4、使QObject的信号、槽、属性以及子对象均可被脚本访问。这儿有一个例子,将一个继承自QObject名为“myObject”的子类的实例被脚本代码访问:【代码】这将在脚本环境中创建一个较名为myObject的全局变量。这个变量作为潜在C++对象的代理。注意脚本变量的名称可以是任意指定,它不依赖于QObject::objectName()NewObject()函数还有另外两个可选的参数:一个是所有权模式,还有一个参数是一个选项集合,允许你控制QScriptValue如何包装QObject的特定方面。后面会回过头来介绍这些参数的
5、使用。使用信号和槽Qt脚本引入了qt的核心信号槽机制。用qt脚本适用信号和槽有三种方法:l混合C++/脚本:c++程序连接信号和脚本函数。脚本函数可以是,比如说,用户输入的或者从文件读入的。这种办法很有用,特别是在你有一个QObject,但是不想把他暴露给脚本环境时;你只希望脚本可以定义如何响应信号,然后在c++程序侧取建立连接。l混合脚本/c++:脚本可以在脚本环境中暴露的预定义的对象间建立信号和槽的连接。在这种场景下,槽函数本身还是在c++程序中编写的,但是连接的定义是完全动态的(由脚本定义的)。l完全脚本定义:脚本既可
6、以定义信号句柄函数(),也可以利用这些句柄建立连接。比如,脚本可以定义一个函数句柄指向QLineEdit::returnPressed()信号,然后连接这个信号到脚本函数。用qScriptConnect()函数来连接C++信号和脚本函数。下面的例子定义了脚本信号处理句柄,用来处理QLineEdit::textChnaged()信号:【代码】qScriptConnect()函数的前两个参数和你传给QObject::connect()创建通常的c++连接是一样的。第三个参数是脚本对象,当信号处理函数被调用后,该对象类似this对
7、象;上面的例子我们传入了一个无效的脚本值,因此this对象将是全局对象。第四个参数是脚本函数本身(“槽函数”)。下面的例子演示了this参数如何使用:【代码】我们创建了两个QLineEdit对象,并且定义了一个信号处理函数。连接使用了同一个处理函数,但是处理函数根据哪个对象的信号被触发而调用相应的函数,因此打印出来的内容会不同。在脚本代码中,Qt脚本使用了不同的语法来创建或者断开连接,而不是熟悉的c++语法,像QObject::connect()这样。要连接信号,你引用一个信号作为发送对象的属性,然后调用它的connect(
8、)函数。有三个重载的connect()函数,每个函数对应一个disconnect()函数。下面的章节对着三种形式作了描述:信号连接到函数Connect(function)这个形式的连接,connect()函数的参数是要连接到信号的函数。【代码】参数可以像上例这样,是一个qt脚本函数,也可以
此文档下载收益归作者所有