• 8867阅读
  • 6回复

[提问]Qt Script调用标准C函数 [复制链接]

上一主题 下一主题
离线jz0301
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-19
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
请问一下,Qt Script如何调用标准C函数呢?
比如C++中定义了一个函数(或者是类中的静态成员) add(int a, int b)
如何在脚本中实现调用呢?
貌似官方提供的所有例子都是面向对象的调用(即传入QScriptValue对象再进行调用的)
DM500S is just awesome!!!
离线foxyz

只看该作者 1楼 发表于: 2009-08-19
你可以用类把C的代码封装好,然后再用啊。
离线jz0301
只看该作者 2楼 发表于: 2009-08-19
回楼上,我现在想找一个方法使得脚本的编写变得更简单(因为这个是面向用户的,不能让用户再去学面向对象的知识啊)
例如加法 int add(int a, int b)
如何才能在脚本中的调用变成
var res = add(3,4);
而不用再定义对象
DM500S is just awesome!!!
离线lubin008
只看该作者 3楼 发表于: 2009-10-06
有结果了嘛?我也需要这个应用,多谢
离线coffeelzp

只看该作者 4楼 发表于: 2009-10-11
引用第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);
离线wch3535
只看该作者 5楼 发表于: 2010-09-30
为什么我在main函数中调用QScriptEngine engine; 程序就自动退出了呢?
离线huangwen4526

只看该作者 6楼 发表于: 2011-04-06
同问。。求解
快速回复
限100 字节
 
上一个 下一个