首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用QJSEngine从JavaScript访问Qt

用QJSEngine从JavaScript访问Qt
EN

Stack Overflow用户
提问于 2016-10-02 00:57:30
回答 1查看 857关注 0票数 0

我正在使用QJSEngine使应用程序成为可脚本化的。我希望JavaScript端能够修改用户界面。我现在的主要问题是从JavaScript访问Qt。

为了创建小部件,我添加了一个使用QUILoadercreateWidget()包装器

代码语言:javascript
复制
// JavaScript
var w = helpers.createWidget("QPushButton");

// C++
QJSValue helpers::createWidget(QString type)
{
    QUILoader ld;
    return engine.newQObject(ld.createWidget(type));
}

我还注册了来自qt_getQtMetaObject()的所有枚举,它似乎负责处理来自qnamespace.h的所有名称空间级枚举。但它看起来不像是公共API的一部分。

我真的应该手动处理这些东西吗?还是我遗漏了什么?不是有一个registerAllTheThings()函数可以创建一个全局Qt对象,通过这个对象可以使用Qt吗?

如果没有,那我就有问题了。我可以用QUILoader创建QWidget,但是我找不到创建其他对象的方法,比如QStandardItemModel。我以为所有的Qt类都已经通过qRegisterMetaType()注册了,但事实并非如此:QMetaType::type("QStandardItemModel")返回UnknownType导致失败。再说一次,我是不是错过了一些注册所有内容的初始化函数调用?

EN

回答 1

Stack Overflow用户

发布于 2016-10-02 17:21:24

我建议使用QQmlEngine而不是QJSEngine

Is是从QJSEngine派生出来的,所以它可以在相同的模块中做同样的事情,所以没有额外的依赖。

它提供了一种在QML中注册实例化类型的简单方法,具有插件加载机制(导入)等。

我将其作为我在Qt世界峰会2015上演讲的一部分:https://www.youtube.com/watch?v=7LsKoVrb8C8

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39809232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档