gpt4 book ai didi

javascript - Qt Qml Javascript - 在哪里使用哪个?

转载 作者:行者123 更新时间:2023-11-30 03:27:33 26 4
gpt4 key购买 nike

我是 Qt 和 Qml 的新手,我想弄清楚它们是如何协同工作的。
我对在哪里使用 C++ 和在哪里使用 JavaScript 感到困惑。假设我有几个 QML 对象(如表单、输入、下拉列表等)。现在显然这些组件有一些逻辑代码。我应该用 JavaScript 还是 C++ 编写此逻辑代码?假设我的输入有一组属性和信号。这些应该在哪里以及如何编码?如果我应该用JavaScript写,那C++怎么用。 C++ 和 JavaScript 是如何连接的?我很困惑!而且文档也没有帮助我。 谢谢

最佳答案

QML 语言是为了描述接口(interface)而发明的。它旨在让设计人员易于理解。

这意味着在程序中,您通常会使用 C++ 实现所有逻辑,并使用 QML 实现 UI。为了在 C++ 和 QML 之间建立联系,有必要将一些 C++ 代码暴露给 QML。有很多方法可以做到这一点。例如,您可以使 C++ 类在 QML 中可用(参见 http://doc.qt.io/qt-5/qtqml-cppintegration-topic.html ),只需使单例实例在 QML 中可用或将 QObject 指针注入(inject) QML 环境。所有这些都大量使用 Qt 元对象系统 ( http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html )。

// in C++
class MyClass
{
Q_OBJECT
public slots:
int doSomething();
...
};

int main()
{
...
engine->rootContext()->setContextProperty("foo", new MyClass());
...
}

// in QML

function foobar() {
var anInt = foo.doSomething();
}

QML 允许您编写 javascript,您也可以在不使用 C++ 的情况下编写完整的程序,在 javascript 中实现所有内容。但这通常不是一个好主意,尤其是当您需要表演时。

不像某些人说的那样,C++ 不是用来扩展 QML 的。但 QML 在这里为 C++ 对象提供了一个简单的接口(interface),允许开发人员和设计人员创建精美的 UI,而无需输入/学习 C++。

我写QML的个人原则是尽快转到C++。当然,您可以在 QML 中编写简单的函数,但您必须使它们保持简短,以充分利用底层 QML 和 JS 引擎的优化功能。保持 QML 快速非常困难,Qt 文档中有一整页内容介绍了使用 QML 时应考虑的事项 (http://doc.qt.io/qt-5/qtquick-performance.html)。

关于javascript - Qt Qml Javascript - 在哪里使用哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47287047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com