标题:Qt Script调用标准C函数
作者:jz0301
日期:2009-08-19 13:34
内容:
请问一下,Qt Script如何调用标准C函数呢?
比如C++中定义了一个函数(或者是类中的静态成员) add(int a, int b)
如何在脚本中实现调用呢?
貌似官方提供的所有例子都是面向对象的调用(即传入QScriptValue对象再进行调用的)
#1 [foxyz 08-19 14:22]
你可以用类把C的代码封装好,然后再用啊。
#2 [jz0301 08-19 14:40]
回楼上,我现在想找一个方法使得脚本的编写变得更简单(因为这个是面向用户的,不能让用户再去学面向对象的知识啊)
例如加法 int add(int a, int b)
如何才能在脚本中的调用变成
var res = add(3,4);
而不用再定义对象
#3 [lubin008 10-06 18:03]
有结果了嘛?我也需要这个应用,多谢
#4 [coffeelzp 10-11 17:04]
引用第2楼jz0301于2009-08-19 14:40发表的:
回楼上,我现在想找一个方法使得脚本的编写变得更简单(因为这个是面向用户的,不能让用户再去学面向对象的知识啊)
例如加法 int add(int a, int b)
如何才能在脚本中的调用变成
var res = add(3,4);
而不用再定义对象
定义一个类来包装你需要发方法,把这个类暴露在QScript环境中,Script中调用这个类的方法就可以了。
举例:
//tool.h
class Tool:public QObject
{
Q_OBJECT
...
public slots:
int add(int a,int b);
};
//tool.cpp
...
int Tool::add(int a,int b){
return a+b;
}
//暴露
QScriptEngine engine;
Tool tool;
QScriptValue scriptTool=engine.newQObject(&tool);
engine.globalObject().setProperty("tool",scriptTool);
//script
var res=tool.add(3,4);
#5 [wch3535 09-30 17:54]
为什么我在main函数中调用QScriptEngine engine; 程序就自动退出了呢?