用单体类型注册单体对象到qml中

一个单体对象不需要用户手动构造实例就可以将属性,信号,方法在命名空间里暴露。QObject 单体类型是非常有效和安全的方式提供函数和全局属性值。单体对象不能和QQmlContext联合访问引擎的内容。单体对象有QQmlEngine构造,随着QQmlEngine销毁而随之销毁。

1、QJSValue 注册一个Value属性

static QJSValue getCountStatic(QQmlEngineengine,QJSEnginescriptEngine){
	Q_UNUSED(engine);
	static int seedValue = 5;
	QJSValue example = scriptEngine->newObject();
	example.setProperty("someProperty",++seedValue);
	return example;
}

注册:

qmlRegisterSingletonType("Qt.example.signle",1,0,"MyApi",getCountStatic);

//脚本中使用
property var somebee:ExampleSingle.MyApi.someProperty
2、 QObject *

class SingleObject : public QObject
{
	Q_OBJECT
	Q_PROPERTY(int someindex READ someindex WRITE setSomeIndex NOTIFY indexChange)
public:
	SingleObject(QObjectparent = 0);
	~SingleObject();
	int someindex() const;
	void setSomeIndex(int index);
 
	Q_INVOKABLE int doSomething();
 
signals:
	void indexChange(int index);
protected:
	
private:
	int m_someindex;
};

使用Q_INVOKABLE注册

static QObjectgetQtObject(QQmlEngineengine,QJSEnginescriptEngine){
	Q_UNUSED(engine);
	Q_UNUSED(scriptEngine);
	SingleObjectobj = new SingleObject;
	return obj;
}
注册: qmlRegisterSingletonType < SingleObject >( "Qt.example.signle" ,1,0, "MyQtApi" , getQtObject );

脚本调用:

import MessagePerson 1.0
import Qt.example.signle 1.0 as ExampleSingle
Message{
    author:"王bull"
	authorDate:new Date()
	property var somebee:ExampleSingle.MyApi.someProperty
	property var qtbee:ExampleSingle.MyQtApi.doSomething()
}
直接上代码了,会使用即可,C++单体在脚本中的调用介绍到这里了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值