wlly-lzh
2024-06-04 14:31 deepin
qml是解释型语言?
很明显qml是声明式标记语言吧。
Reply Like 0 View the author
qml是解释型语言?
很明显qml是声明式标记语言吧。
qml是解释型语言?
很明显qml是声明式标记语言吧。
开篇第一句“QML 是一种基* 的声明式语言。”
收藏了,认真学习一下
开篇第一句“QML 是一种基* 的声明式语言。”
然而文中依然提到了“虽然 QML 是解释型语言”。
私以为这样的话很容易引起误解,如果此处的“解释型语言”有特殊的含义,还请专门指出。
然而文中依然提到了“虽然 QML 是解释型语言”。
私以为这样的话很容易引起误解,如果此处的“解释型语言”有特殊的含义,还请专门指出。
哈哈,我也是原文摘录,刚才百度搜索了下“声明式语言”和“解释型语言”,感觉我俩要被别人当傻子围观了,哈哈😂
qml的视觉效果,未来社区版可期
学习
我会js,相当于我会QML?
哈哈,我也是原文摘录,刚才百度搜索了下“声明式语言”和“解释型语言”,感觉我俩要被别人当傻子围观了,哈哈😂
凡是以ml结尾的都是标记语言(markup language)。
一直对qml不太熟。他是那种响应式的语言吗?
命令式:
比如我有一个Text组件和一个Button组件,我想更改这个Text组件的文字,
我就要在Button拿到这个Text的id,然后
还是我可以这样:
响应式:
但是我之前学习的时候又看到有‘model’这种类似的词汇。
所以一直不太理解qml到底是响应式的,还是命令式的。😭
Popular Events
More
QML 是一种基* 的声明式语言。在 Qt 5 中,QML 有了长足进步,并且同 C++ 并列成为 Qt 的首选编程语言。也就是说,使用 Qt 5,我们不仅可以使用 C++ 开发 Qt 程序,而且可以使用 QML。虽然 QML 是解释型语言,性能要比 C++ 低一些,但是新版 QML 使用 V8,Qt 5.2 又引入了专为 QML 优化的 V4 引擎,使得其性能不再有明显降低。
QML可以在脚本里创建图形对象,并且支持各种图形特效,以及状态机等,同时又能跟Qt写的C++代码进行方便的交互,使用起来非常方便。
QML实际上是Qt Quick (Qt4.7.0中的新特性)核心组件之一,Qt Quick 就是使用 QML 构建的一套类库。
QML 属性
QML 将用户界面分解成一块块小的元素,每一元素都由很多组件构成。QML 定义了用户界面元素的外观和行为;更复杂的逻辑则可以结* 脚本实现。这有点类似于 HTML * 的关系,前者用来显示界面,后者用来定义行为。
QML 基本元素可以分为可视元素和不可视元素两类。
可视元素
QML最基本的可视元素:Item、MouseArea、Rectangle、Text、Image
Item
Item是所有可视元素中最基本的一个。它是所有其它可视元素的父元素,可以说是所有其它可视元素都继承Item。Item本身不具有特定的可视化外观,而是用作容器(例如放置Rectangle、Image、Text等元素)或布局控制器,它的作用是定义所有可视元素的通用属性,例如控制元素的位置、大小、可见性、透明度等:
Item它还具有事件处理能力,可以处理鼠标、键盘和触摸事件。Item是QML中的基本元素类型,用于创建用户界面并控制元素的外观和行为。
几何属性x和y:指定元素相对于其父元素的位置坐标。
z是定义堆叠顺序。
width和height:指定元素的宽度和高度。
rotation:指定元素的旋转角度。
enabled:指定元素是否启用。设置为true时启用,设置为false时禁用。
anchors:用于指定元素相对于其父元素或其他元素的定位方式。
MouseArea 鼠标区域
MouseArea是 Qt Quick 的重要组成部分,用于处理鼠标交互事件。它允许你在QML界面中捕获和响应鼠标的移动、点击和释放等事件。MouseArea 属性描述键盘事件onPressed、onReleased、onEntered、onExited等,可以根据需要选择相应的事件进行处理。鼠标事件hoverEnabled、drag.target等,可以用于控制鼠标事件的交互行为,例如启用悬停效果或启用拖拽操作。
onEntered:在鼠标进入MouseArea元素时触发。
onExited:在鼠标离开MouseArea元素时触发。
onPressed:在鼠标按下时触发。
onReleased:在鼠标释放时触发。
onClicked:在鼠标点击时触发。
onPositionChanged:在鼠标位置发生变化时触发。
示例:
Rectangle 矩形
RectangleRectangle是QML中的一个基本可视元素,用于绘制矩形形状的图形对象Rectangle 属性描述
x、y:矩形的左上角相对于其父元素的坐标。
width、height:矩形的宽度和高度。
color:矩形的背景颜色。
border.width、border.color:矩形的边框宽度和颜色。r
adius:矩形的圆角半径。
visible:矩形的可见性。
opacity:矩形的不透明度。
示例
示例2:定义一个宽 100 像素、高 150 像素,浅金属蓝填充,红色 4 像素的边框的矩形:
Text
Text 类型可以用于在Rectangle中增加文字信息,Text 属性描述:
上述示例:
text: 显示的文本内容为"Hello, World!"。
color: 文本颜色为
#303030
。font.family: 字体族名称,文本字体为“Century”。
font.pixelSize: 字体大小为18像素。
更多属性如下:
font.bold: 是否使用粗体字体。
font.italic: 是否使用斜体字体。
font.underline: 是否使用下划线。
font.strikeout: 是否使用删除线。
font.capitalization: 文本的大小写转换方式。
horizontalAlignment: 文本在水平方向上的对齐方式。
verticalAlignment: 文本在垂直方向上的对齐方式。
wrapMode: 文本的换行方式。
示例
Image
用于显示图像。目前 QML 支持的图像格式有 PNG、JPG、GIF 和 BMP 等,相关属性解释如下:
fillMode: 图像的填充模式,用于控制图像如何适应元素的大小。
sourceSize: 指定图像的原始大小,用于进行缩放或裁剪。
asynchronous: 是否异步加载图像文件。
smooth: 是否对图像进行平滑处理。
visible: 图像的可见性。
source: 图像的源文件路径为"image.jpg"。这里假设当前目录下存在名为"image.jpg"的图像文件。
除此之外,我们也可以直接给
source
属性一个 URL 来自动从网络加载图片,也可以通过fillMode
属性设置改变大小的行为。例如下面代码片段:对于较大的图像文件或远程图像,你可以使用异步加载来避免界面的阻塞。
通过将asynchronous属性设置为true,可以在图像加载时将其作为后台任务,不会阻塞主线程。
通过将asynchronous属性设置为true,可以在图像加载时将其作为后台任务,不会阻塞主线程。
上面内容都是摘录的,对Qt和QML学习感兴趣的同学可以查阅:Qt学习之路