V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rv54ntjwfm3ug8
V2EX  ›  程序员

在 Qt C++的项目中使用 QML 会调用 JS 渲染吗?会影响程序响应速度吗?

  •  
  •   rv54ntjwfm3ug8 · 2022-03-29 22:09:55 +08:00 · 1690 次点击
    这是一个创建于 1001 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想写很炫的 UI ,V 友们说用 QML 写更方便。

    8 条回复    2022-03-30 10:51:21 +08:00
    enki0423
        1
    enki0423  
       2022-03-29 22:13:40 +08:00 via iPhone
    渲染咋可能是 js ,build 之后肯定还是 cpp 代码
    ian19znj
        2
    ian19znj  
       2022-03-29 22:43:00 +08:00
    @enki0423 据我所知,QML 里面的逻辑是直接用 JS 语言写的,并不会转成 CPP 。
    ian19znj
        3
    ian19znj  
       2022-03-29 22:45:16 +08:00
    https://doc.qt.io/qt-5/qtqml-javascript-hostenvironment.html

    这里讲的很清楚
    Like a browser or server-side JavaScript environment, the QML runtime implements the ECMAScript Language Specification standard. This provides access to all of the built-in types and functions defined by the standard, such as Object, Array, and Math. The QML runtime implements the 7th edition of the standard.
    enki0423
        4
    enki0423  
       2022-03-29 23:02:16 +08:00 via iPhone
    只是 implement 这个 standard 啊,你可以用 js+css 的方式写界面,并不是说 build 之后用 js 跑,如果是这样 qml 还有什么必要?直接上 qtwebengine 不就好了?
    duke807
        5
    duke807  
       2022-03-29 23:12:24 +08:00 via Android
    @enki0423 你最後說的很對,所以更多的人選擇用 h5 ,而不用 qml
    enki0423
        6
    enki0423  
       2022-03-30 00:28:05 +08:00 via iPhone
    @duke807 我以前写 qt 的,但是现在没有特殊情况我都用 react
    missdeer
        7
    missdeer  
       2022-03-30 09:30:57 +08:00   ❤️ 1
    @ian19znj 你的理解不对,这里说的是 QML 内建有一个 JS 解释器实现,但没说里面的逻辑是用 JS 实现的,而是让用户可以用 JS 写逻辑,当然用户也可以用 C++写逻辑。
    然后 Qt 有个 Qt Quick Compiler ,只要在.pro 里加个选项就会自动把打包到 qrc 里的 qml 文件和 js 文件都编译成中间语言,甚至还能编译成 C++。
    nonwill
        8
    nonwill  
       2022-03-30 10:51:21 +08:00
    绝知此事要躬行

    问的不够累嘛,拜托,看官方的 Help 或 assistant 文档是对 OP 主的最佳帮助
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3021 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:53 · PVG 21:53 · LAX 05:53 · JFK 08:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.