QML (Qt Markup Language[3] 或 Qt Meta Language 或 Qt Modeling Language[4]) 是基於JavaScript宣告式編程程式語言,用於設計圖形使用者介面為主的應用程式。它是Qt Quick英语Qt Quick諾基亞開發的使用者介面建立套件的一部分。QML 主要用於行動應用程式,注重於觸控輸入、流暢的動畫(60張/秒)和使用者體驗。QML documents 描述元素的物件樹。

QML
编程范型編程範型宣告式編程脚本语言
實作者Qt發展框架
发行时间2009
当前版本
編輯維基數據鏈接
型態系統動態強型別
網站[1]
受影响于
JavaScriptQt
影響語言
Qt
QML
扩展名
.qml
互联网媒体类型text/x-qml
开发者Qt Project
格式类型脚本语言
网站qt-project.org/doc/qt-5/qmlapplications.html

QML 元素可以透過標準 JavaScript 增強,包括這 inline 和引入.js 檔。元素可以也無縫整合和使用 Qt 框架的 C++ 元件擴展。

語言的名稱是 QML。runtime的名稱是 QQuickView。

語法、語義

编辑

基本語法

编辑

範例:

import QtQuick 1.0

 Rectangle {
     id: canvas
     width: 200
     height: 200
     color: "blue"

     Image {
         id: logo
         source: "pics/logo.png"
         anchors.centerIn: parent
         x: canvas.height / 5      
     }
 }

動畫

编辑
 Rectangle {
     id: rect
     width: 120; height: 200

     Image {
         id: img
         source: "pics/qt.png"
         x: 60 - img.width/2
         y: 0

         SequentialAnimation on y {
             loops: Animation.Infinite
             NumberAnimation { to: 200 - img.height; easing.type: Easing.OutBounce; duration: 2000 }
             PauseAnimation { duration: 1000 }
             NumberAnimation { to: 0; easing.type: Easing.OutQuad; duration: 1000 }
         }
     }
 }

Qt/C++ 整合

编辑

QML 不需要 Qt/C++ 的知識就能使用,但它可以輕鬆地擴展 Qt。

熟悉的概念

QML 提供直接訪問,從以下來自 Qt 的概念:

  • QAction – action 類型
  • QObject signals and slots – 作為在 JavaScript 中調用的函數
  • QObject properties – 作為 JavaScript 中的變數
  • QWidget – QDeclarativeView 是一個 QML-displaying widget
  • Q*Model – 直接用在資料綁定 (如 QAbstractItemModel)

Qt 信號處理式

编辑
 MouseArea {
     onPressed: console.log("mouse button pressed")
 }

操作方法

编辑

開發工具

编辑

由于 QML 和 Javascript 的语法相似,大多数支持 Javascript 的编辑器均可编辑 QML。但是从 Qt Creator 的 2.1 版本开始,该 IDE 提供了完整的语法高亮、代码补全、内建帮助和所见即所得编辑器。在商业版本的 Creator 中,所见即所得编辑器还会提供更多的功能。

參考資料

编辑
  1. ^ Qt 6.4 Released. 2022年9月29日. 
  2. ^ Qt 5.14.1 Released. 2020-01-27 [2020-03-10]. (原始内容存档于2020-04-08). 
  3. ^ Qt 4.8: QML Tutorial. [2013-10-31]. (原始内容存档于2013-11-02). 
  4. ^ Henrik Hartz (Product Manager for Qt Software at Nokia) comment on the name. 24 August 2009 [2011-06-14]. (原始内容存档于2011-07-23). 

外部連結

编辑

📚 Artikel Terkait di Wikipedia

矩形法

x){ return sin(x); /*也可以回传其他数学子程序,像cos(2*x)或2*atan(3*x+1)-1*/ } double rectangle_integrate(double a, double b, int subintervals){ double result; double

微积分学主题列表

以下是一份微积分学主题列表: 函数图形 Linear function(英语:Linear function) 割线 斜率 切线 凹函数 差分 弧度 階乘 二项式定理 自由变量和约束变量 复数 (数学) 极限 (数学) 函數極限 One-sided limit(英语:One-sided limit)

代码重构

提取方法(Extract Method)—意思是将大段代码中的一部分提取后,构成一个新方法。这种重构可以使整段程序的结构变得更清晰,从而增加可读性。这也对函数(Function)通用。 类一般化(英语:Type generalization)(Generalize Type)—将多个类/函数共用的类型抽象出可以公用的基类(base

梁友栋-柏世奇算法

negarr[5];   int posind = 1, negind = 1;   posarr[0] = 1;   negarr[0] = 0;   rectangle(xmin, 467 - ymin, xmax, 467 - ymax); // drawing the clipping window  

Smalltalk

new Rectangle(100, 200); 不清楚这些实际参数分别是什么。与之相反,在Smalltalk中,这个代码可以写为: Rectangle width: 100 height: 200 这个情况下接收者是Rectangle类,回答是这个类的具有指定宽度和高度的一个实例。

加伯轉換

(類比於傅立葉轉換)後,其波包形狀保持不變。 最佳時間-頻率局部化特性 Gabor Transform 使用高斯窗函數,與其他常見窗函數(如Rectangle、Triangle、Hanning、Hamming)相比,滿足測不準定理的最小下限(Minimum Uncertainty