QML了解

QT Quick是QT提供的一种高级用户界面工具包,包含对QML完美支持,QTQuick设计器,QML与C++混合编程技术。Qt Quick 就是使用 QML 构建的一套类库。
在这里插入图片描述
Qml模块本身并没有涉及图形显示,所有的图形处理都由Qt Quick模块完成。
QMl是一种高效的开发UI 的语言。QML(Qt Meta-Object Language,Qt元对象语言)是一种声明式编程语言,并且它是Qt框架的一个组成部分。QML的主要功能是让开发人员快速、便捷地开发出用户界面,这些界面包括了桌面应用、移动设备和嵌入式就用的界面。并且,QML还能够与JavaScript无缝整合一起开发使用,即在QML代码中可以直接使用JavaScript文件。

# view.qml
import QtQuick 2.0

Rectangle {
    width: 200
    height: 200
    color: "green"

    Text {
        text: "Hello World"
        anchors.centerIn: parent
    }
}

创建QML项目

只想测试QML相关内容,希望可以快速显示界面效果,这时可以创建 Qt Quick Ul项目。Qt QuickUl项目中只包含QML和JavaScript代码,没有添加任何C++代码。
在这里插入图片描述
在这里插入图片描述

创建Qt Quick项目

在这里插入图片描述

// main.qml
import QtQuick 2.12
import QtQuick.Window 2.12
 
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
}

每一个 QML 有且只有一个根元素,类似于 XML 文档。这个根元素就是这个 QML 文档中定义的 QML 元素,在这个例子中就是一个 Window 对象。

#include <QtQml>
import QtQml 2.14

qmake .pro文件:

QT += qml

QML Basic Types

QML对象类型是指具有properties, signals, methods等的对象。

  • bool:true/false
Item {
      focus: true
      clip: false
  }
  • double
Item {
      property double number: 32155.2355
  }
  • enumeration:<Type>.<value>
Text { horizontalAlignment: Text.AlignRight }
  • int:e.g. 0, 10, or -20。
Item { width: 100; height: 200 }
  • list
import QtQuick 2.0

  Item {
      width: 100; height: 100

      states: [
          State { name: "activated" },
          State { name: "deactivated" }
      ]

      Component.onCompleted: {
          console.log("Name of first state:", states[0].name)
          for (var i = 0; i < states.length; i++)
              console.log("state", i, states[i].name)
      }
  }

如果列表仅包含一个对象,则可以省略方括号:

import QtQuick 2.0

  Item {
      width: 100; height: 100
      states: State { name: "activated" }
  }
  • real:带小数点的数字
Item { width: 100.45; height: 150.82 }
  • string
Text { text: "Hello world!" }
  • url
Image { source: "pics/logo.png" }
Image {
      source: "pics/logo.png"

      Component.onCompleted: {
          // This prints 'false'. Although "pics/logo.png" was the input string,
          // it's been converted from a string to a URL, so these two are not the same.
          console.log(source == "pics/logo.png")

          // This prints 'true' as Qt.resovledUrl() converts the string into a
          // URL with the correctly resolved path
          console.log(source == Qt.resolvedUrl("pics/logo.png"))

          // This prints the absolute path, e.g. "file:///path/to/pics/logo.png"
          console.log(source.toString())
      }
  }
  • var:可以引用任何数据类型的通用属性类型。
Item {
      property var aNumber: 100
      property var aBool: false
      property var aString: "Hello world!"
      property var anotherString: String("#FF008800")
      property var aColor: Qt.rgba(0.2, 0.3, 0.4, 0.5)
      property var aRect: Qt.rect(10, 10, 10, 10)
      property var aPoint: Qt.point(10, 10)
      property var aSize: Qt.size(10, 10)
      property var aVector3d: Qt.vector3d(100, 100, 100)
      property var anArray: [1, 2, 3, "four", "five", (function() { return "six"; })]
      property var anObject: { "foo": 10, "bar": 20 }
      property var aFunction: (function() { return "one"; })
  }
  • date:“YYYY-MM-DDThh:mm:ss.zzzZ”
MyDatePicker { minDate: "2000-01-01 0:0"; maxDate: "2020-12-31 23:59" }
  • point:描述x和y属性,“x,y”
CustomObject { myPointProperty: "0,20" }
CustomObject { myPointProperty: Qt.point(0, 20) }
  • rect:x, y, width and height。“x, y, width x height”
CustomObject { myRectProperty: "50,50,100x100" }
CustomObject { myRectProperty: Qt.rect(50, 50, 100, 100) }
Rectangle {
      width: childrenRect.width
      height: childrenRect.height

      Rectangle { width: 100; height: 100 }
  }

  • size:width和height。“width x height”
Image { sourceSize: "150x50" }
Image { sourceSize: Qt.size(150, 50) }
Column {
      Image { id: image; source: "logo.png" }
      Text { text: image.sourceSize.width + "," + image.sourceSize.height }
  }

QML object types

  • Component:(组件)组件是可重用、封装的 QML 类型,具有明确定义的接口。
  • QtObject
  • Binding
  • Connections
  • Timer

quick组件

如表是Qt Quick Controls 1.1 提供的组件

ApplicationWindow对应QMainWindow,提供顶层应用程序窗口
MenuBar对应QMenuBar,提供窗口顶部横向的菜单栏
StatusBar对应QStatusBar,提供状态栏
ToolBar对应QToolBar,提供工具栏,可以添加ToolButton和其它组件
Action对应QAction,提供能够绑定到导航和视图的抽象的用户界面动作
ScrollView对应QScrollView,提供滚动视图
SplitView对应QSplitter,提供可拖动的分割视图布局
StackView对应QStackedWidget,提供基于栈的层叠布局
TabView对应QTabWidget,提供带有标签的基于栈的层叠布局
TableView对应QTableWidget,提供带有滚动条、样式和表头的表格
Button对应QPushButton,提供按钮组件
CheckBox对应QCheckBox,提供复选框
ComboBox对应QComboBox,提供下拉框
TabView对应QTabWidget,提供带有标签的基于栈的层叠布局
GroupBox对应QGroupBox,提供带有标题、边框的容器
Label对应QLabel,提供标签组件
ProgressBar对应QProgressBar,提供进度条组件
RadioButton对应QRadioButton,提供单选按钮
Slider对应QSlider,提供滑动组件
SpinBox对应QSpinBox,提供微调组件
Switch提供类似单选按钮的开关组件
TextArea对应QTextEdit,提供能够显示多行文本的富文本编辑框
TextField对应QTextLine,提供显示单行文本的纯文本编辑框
ToolButton对应QToolButton,提供在工具栏上显示的工具按钮
  • 8
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: QML是一种描述界面的语言,可以通过它来快速的实现跨平台的GUI应用程序。在Qt官方提供的例子中,有很多涉及到QML的示例程序,这些示例程序基本都包含了QML的基本用法和一些高级功能的实现方法。例如在Qt的安装目录中可以找到Qt Quick Examples文件夹,里面包含了很多实用的QML示例程序,比如动画效果、图形界面、音视频播放等,这些示例程序使用了各种各样的QML组件,丰富了QML的使用场景。同时,在网上也有很多开源的QML项目,可以供大家参考学习,例如Qt Creator编辑器的源码,QQ音乐的UI界面等,这些项目中包含了很多实用的QML组件和布局方式,可以帮助开发者快速地实现自己的界面设计。总之,QML的示例程序和开源项目为开发者提供了很好的学习和借鉴资源,让开发者更加方便地使用QML来实现自己的界面设计。 ### 回答2: QMLQt Meta-Object Language的缩写,是一种声明式的编程语言,用于创建用户界面(UI)和应用程序逻辑。QML具有易于学习和使用的语法,可以帮助开发人员在较短的时间内快速创建复杂的UI界面和应用程序逻辑。 QML Example是一个QML应用程序的示例,它是在Qt Creator中创建的,可以帮助开发人员了解QML的基本语法、使用Qt Quick控件和组件、状态管理和动画的实现方法等。QML Example中包含了多种类型的控件和组件,如Button、Slider、ComboBox、Rectangle、Image等,还有一些常用的元素,如属性、信号和槽、状态转换、动画效果等。 例如,QML Example中的Button控件,可以定义按钮的文本、颜色、背景、边框样式等属性,还可以为按钮定义 onClicked 信号,使得当用户点击按钮时,可以触发相应的槽函数执行某些操作。另外,QML Example还演示了如何使用动画效果实现控件之间的平滑过渡和状态转换。 总之,QML Example是一个非常实用的示例应用程序,可以帮助开发人员快速掌握QML的基本语法和应用技巧,有助于提高开发效率和开发质量。 ### 回答3: QMLQt Quick语言的缩写,是用于创建高效、现代且具有吸引力的用户界面的声明性语言。它基于JavaScript语言和控件的XML描述语言,可以快速地创建动态的用户界面。QML具有良好的可读性和可维护性,可以让开发者专注于用户界面本身而非技术细节。 QML示例是QML编程中的一个重要方面,能够为开发者提供创建QML界面的模板。示例可以是一系列标准控件(如文本编辑框、按钮等)的集合,也可以是自定义控件的集合,甚至可以是自定义功能的实现。通过QML示例,开发者可以了解如何使用各种控件以及如何实现不同的效果,加快开发速度。 Qt Creator是一个流行的集成开发环境(IDE),它提供了大量的QML示例,方便开发者学习和使用。通过Qt Creator中的示例浏览器,开发者可以快速地浏览并运行示例。这些示例涵盖了各种常见的控件和功能,如按钮、滑块、文本编辑框、菜单、动画等。开发者可以通过研究这些示例来了解如何使用这些控件和功能,以及如何实现自定义的界面。 总之,QML示例是QML编程中的一个重要工具,可以提高开发效率,快速学习QML控件和功能的使用。开发者可以通过Qt Creator中的示例浏览器浏览和查找示例,以及通过研究示例代码了解如何实现不同的用户界面效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值