如何才能在Qt Script脚本里面直接new自己的Qt C++类
来源:互联网 发布:淘宝好评卡模板 编辑:程序博客网 时间:2024/05/22 08:14
Qt的script脚本除了直接使用Qt C++暴露给Qt Script的那些类以外,也可以直接new一个你自己写的Qt C++类。方法如下:
1.生成一个自己的C++类Add
- Demo.pro
QT += core scriptQT -= guiTARGET = DemoCONFIG += consoleCONFIG -= app_bundleTEMPLATE = appSOURCES += main.cpp add.cppHEADERS += add.h注意一定要加上 QT += script
- add.h
#ifndef ADD_H#define ADD_H#include <QObject>class Add : public QObject{ Q_OBJECTpublic: explicit Add(QObject *parent = 0);public slots: int add(int x, int y);};#endif // ADD_H
- add.cpp
#include "add.h"Add::Add(QObject *parent) : QObject(parent){}int Add::add(int x, int y){ return x + y;}
2. 让Add可以在Qt script里面直接new
- 用Q_SCRIPT_DECLARE_QMETAOBJECT(Add, QObject*)来声明你的QMetaObject
- 用engine.scriptValueFromQMetaObject<Add>()来把Add变成一个QScriptValue addClass
- 把addClass暴露给QScriptEngine
#include <QtCore/QCoreApplication>#include <QtScript>#include <QtDebug>#include "add.h"Q_SCRIPT_DECLARE_QMETAOBJECT(Add, QObject*)int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QScriptEngine engine; QScriptValue addClass = engine.scriptValueFromQMetaObject<Add>(); engine.globalObject().setProperty("Add", addClass); engine.evaluate("f = new Add()"); qDebug()<<"3+5="<<engine.evaluate("f.add(3, 5)").toInteger(); return a.exec();}
- 如何才能在Qt Script脚本里面直接new自己的Qt C++类
- Qt里面的new和delete
- QT 音乐播放器 在windows里面的发布
- QT里面的layout设置
- Qt里面的一些细节
- Qt script 加载 js 的时机
- 发布的Qt程序如何才能正常显示图片
- 发布的Qt程序如何才能正常显示图片
- 在qt窗体里面显示html
- Qt wifi helper script
- 自己在网上收集的一些Qt的小用法
- QT程序在ARM的执行环境配置脚本
- 怎么在QT中启用外部的脚本程序
- qt 在linux环境下的搭建 (自己整理)
- 在 beaglebone black 开机启动自己的QT程序
- 在自己的qt工程中配置qxmpp
- 如何在Qt中写自己的动态连接库
- 如何在Qt中写自己的静态连接库
- .net 与 javascript脚本的几种交互方法
- 自顶向下网络术语翻译一览表(一)
- 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C/C++程序(链表)
- 自动打渠道包的shell命令
- php:修改NetBeans默认字体
- 如何才能在Qt Script脚本里面直接new自己的Qt C++类
- 寻求新的业务增长点,搭建企业专属电商平台
- js <abbr><blockquote>两个标签
- Java乔晓松-android中获取图片的缩略图(解决OutOfMemoryError)内存溢出的Bug
- ubuntu系统下给你的ipad充电(适用于所有ios设备)
- python的安装
- 正则表达式删除XML文件中的注释
- KindEditor图片上传路径URL的处理
- 一些想法