QT(Quick)
Quick
sssnial-jz
这个作者很懒,什么都没留下…
展开
-
动态Qml(四-创建和销毁对象2)
上一节演示了怎么动态创建(在我们需要的时候就创建)对象,但是对象本身是个 QML 文件,这节演示怎么通过文本创建对象!代码:import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true id:root width: 640 height: 480 title: qsTr("Hello World") function createItem() { Q原创 2021-04-10 17:58:16 · 327 阅读 · 0 评论 -
动态Qml(三-创建和销毁对象)
加载一块QML代码时,它首先会被解释执行为一个组件。 这一步包含了加载依赖和验证代码。 QML的来源可以是本地文件,Qt资源文件,或者一个指定的URL网络地址——这意味着加载时间不确定 组件创建之后,它的状态可以用来跟踪它的状态属性。 可以使用的状态值包括:组件为空 (Component.NULL) 组件加载中(Component.Loading) 组件可用 (Component.Ready) 组件错误(Component.Error)从空(NULL)状态到加载中(Loading)再到可用原创 2021-04-10 17:49:39 · 1345 阅读 · 0 评论 -
动态Qml(二-间接链接)
Connection 可以连接一个目标元素任意数量的信号 通过改变 target 可以在不同的时间监控不同的元素 注意当多个信号被处理调用所有操作时,执行的顺序是未定义的 当创建一个连接元素(Connection element)未指定目标属性时,默认的属性是父对象 这意味着需要显式的设置NULL来避免捕获来自父对象的信号,直到 target 被设置说白了,就是 Connection 的用法!代码:import QtQuick 2.9import QtQuick.Window 2.原创 2021-04-10 16:14:36 · 359 阅读 · 0 评论 -
动态Qml(一-动态加载组件)
Loader element 作为一个占位符项用来加载 Item Item 的加载通过资源属性(source property)或者资源组件(sourceCompontent)属性控制 加载元素项通过给定的URL链接加载 Item ,然后实例化一个组件 Loader element 的大小基于被加载项的大小而定,反之亦然。 如果Loader element定义了大小,或者通过锚定(anchoring) 定义了宽度和高度,被加载项将会被设置为 Loader element 的大小 如果 Loader原创 2021-04-10 15:24:38 · 1353 阅读 · 0 评论 -
Multimedia(五-播放列表)
作者说 Qt 5 multimedia 没有提供视频列表接口,但是好像提供了!import QtQuick 2.9import QtQuick.Window 2.2import QtMultimedia 5.6Window { visible: true width: 1024 height: 600 title: qsTr("Hello World") Rectangle { id: root anchors.fil原创 2021-04-10 13:56:53 · 134 阅读 · 0 评论 -
Multimedia(四-视频流)
其实就是照相机了!import QtQuick 2.9import QtQuick.Window 2.2import QtMultimedia 5.6Window { visible: true width: 1024 height: 600 title: qsTr("Hello World") Item { anchors.fill: parent VideoOutput {原创 2021-04-10 13:36:17 · 164 阅读 · 0 评论 -
Multimedia(三-声音)
当播放声音效果时,从请求播放到真实响应播放的响应时间非常重要一import QtQuick 2.9import QtQuick.Window 2.2import QtMultimedia 5.0Window { visible: true width: 770 height: 480 title: qsTr("Hello World") Item { id: root anchors.fill: parent原创 2021-04-10 11:58:10 · 83 阅读 · 0 评论 -
Multimedia(二:一些参数)
上一节实现了简单的媒体播放,这节在上一节的基础上完善一下!当播放媒体时可以通过MediaPlayer元素的volume属性来控制音量 duration与position属性可以用来创建一个进度条。如果seekable属性为true,当拨动进度条时可以更新position属性 mediaObject属性的notifyInterval属性改变可以设置每个position之间更新的毫秒数,增加用户界面的平滑度。 使用status属性来监听播放器,这个属性是一个枚举,它枚举了播放器可能出现的状态:Med原创 2021-04-10 11:14:15 · 235 阅读 · 0 评论 -
Multimedia(一:初识)
MediaPlayer 元素有一个source属性指向需要播放的媒体。 当媒体源被绑定后,简单的调用play 函数就可以开始播放 需要配置一个 VideoOutput元素。 MediaPlayer播放通过source属性与视频输出绑定代码:import QtQuick 2.9import QtQuick.Window 2.2import QtMultimedia 5.0Window { visible: true width: 640 height: 480原创 2021-04-10 10:10:59 · 131 阅读 · 0 评论 -
粒子模拟(七-粒子组2)
上一节我们实现了火箭/烟雾/重力/摩擦等效果,这节我们实现火箭“死亡”之后爆炸为烟花!1,GroupGoal允许我们改变一组粒子变化到另一组粒子(当进入 GroupGoal 区域后) // 使用groupGoal属性, // 我们设置目标组改变为我们之前定义的 // 'explosion' 粒子组 GroupGoal { id: rocketChanger原创 2021-04-09 12:59:55 · 99 阅读 · 0 评论 -
粒子模拟(六-粒子组1)
这节我们通过前面学过的粒子相关知识,加上粒子组的用法,实现一个有意思的 Demo第一步:创建界面import QtQuick 2.9import QtQuick.Window 2.2import QtQuick.Particles 2.0Window { visible: true width: 680 height: 440 title: qsTr("Rocket..") Item{ anchors.fill: parent原创 2021-04-09 10:53:59 · 83 阅读 · 0 评论 -
粒子模拟(五-粒子控制)
粒子由粒子发射器发出。在粒子发射出后,发射器无法再改变粒子。粒子控制器允许你控制发射后的粒子参数。控制器的每个类型使用不同的方法来影响粒子:生命周期(Age)- 修改粒子的生命周期 吸引(Attractor)- 吸引粒子朝向指定点 摩擦(Friction)- 按当前粒子速度成正比减慢运动 重力(Gravity)- 设置一个角度的加速度 紊流(Turbulence)- 强制基于噪声图像方式的流动 漂移(Wander)- 随机变化的轨迹 组目标(GroupGoal)- 改变一组粒子群的状态原创 2021-04-09 08:51:19 · 452 阅读 · 0 评论 -
粒子模拟(四-粒子项)
到目前为止我们只使用了基于粒子画笔的图像来实现粒子可视化Qt也提供了一些其它的粒子画笔:粒子项(ItemParticle):基于粒子画笔的代理 自定义粒子(CustomParticle):基于粒子画笔的着色器粒子项 ItemParticle{ id:particle system: particleSystem delegate: itemDelegate原创 2021-04-09 08:51:07 · 105 阅读 · 0 评论 -
粒子模拟(三-粒子方向2)
点方向上一节我们使用了“角度方向”来改变粒子运动的方向和速度,这节我们试试“点方向”“点方向”是 x 和 y 共同决定粒子运动的方向 如果我们想要粒子朝着45度数方向运动,可以指定 x 和 y 相同的值! yVariation 指定了在 Y 轴上下变化的角度范围(例子在上一节的代码上修改以下代码) velocity: PointDirection { x: 100 y: 0原创 2021-04-08 17:45:59 · 193 阅读 · 0 评论 -
粒子模拟(二-粒子方向)
有多种可用矢量空间用来定有多种方法定义粒子的速度或加速度:角度方向(AngleDirection)- 使用角度的方向变化。 点方向(PointDirection)- 使用x,y组件组成的方向变化。 目标方向(TargetDirection)- 朝着目标点的方向变化。使用 AngleDirection 改变粒子的速度和方向代码:import QtQuick 2.9import QtQuick.Window 2.2import QtQuick.Particles 2.0Windo原创 2021-04-08 17:23:17 · 347 阅读 · 0 评论 -
粒子模拟(一-简单的粒子模拟和一些参数)
粒子模拟的机制有点复杂,暂时还没法理解透彻,所以 “粒子模拟”纯粹是一个学习的过程!简单的例子模拟简单例子模拟需要做的任务:绑定所有元素到一个模拟的粒子系统(ParticleSystem)。 一个向系统发射粒子的发射器(Emitter)。 一个ParticlePainter派生元素,用来实现粒子的可视化。import QtQuick 2.9import QtQuick.Window 2.2import QtQuick.Particles 2.0Window { visib原创 2021-04-08 16:11:48 · 1064 阅读 · 0 评论 -
Canvas(四-绘图程序)
创建四个颜色盒子,然后将这四个盒子装在 Row 定位器中,Row 定位器保存一个变量,此变量保存用户通过点击这四个盒子决定的颜色值!ColorSquare组件:import QtQuick 2.5Rectangle { id: root width: 48; height: 48 color: "green" signal clicked property bool active: false border.color: active? "#66原创 2021-04-08 15:07:45 · 133 阅读 · 0 评论 -
Canvas(三-关于绘图的一些技巧2)
坐标变换:就是改变画布的原点坐标了import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 240 height: 120 title: qsTr("Hello World") Item { anchors.fill: parent Canvas{ id:root anchors.fi原创 2021-04-08 14:24:42 · 146 阅读 · 0 评论 -
Canvas(二-关于绘图的一些技巧1)
画矩形的接口:// 填充矩形// ctx.fillRect(20,20,80,80)// 清楚矩形区域// ctx.clearRect(30,30,60,60)// 无填充的矩形// ctx.strokeRect(20,20,40,40)渐变色:注意:要注意渐变色的范围的定义方式!var gradient = ctx.createLinearGradient(100,0,100,200)gradient.addColorStop(0.0,"blue")gradient.ad原创 2021-04-08 10:54:53 · 123 阅读 · 0 评论 -
Canvas(一-QML绘图基本概念)
画布元素(canvas element)的基本思想是使用一个2D对象来渲染路径。这个2D 对象包括了必要的绘图函数!画布元素(canvas element)充当绘制画布。2D对象支持画笔,填充,渐变,文本和绘制路径创建命令。画一个简单的填充矩形:获取 2d 对象的代码:var ctx = getContext("2d")渲染路径的代码:// 线条宽度为 4ctx.lineWidth = 4// 画笔样式为蓝色ctx.strokeStyle = "blue"// 填充风格我原创 2021-04-08 09:37:10 · 521 阅读 · 0 评论 -
MVD(五-路径视图PathView)
PathView创建了一个可以让子项沿着任意路径移动的视图 沿着相同的路径,使用缩放(scale),透明(opacity)等元素可以更加详细的控制过程 当使用PathView时,你必须定义一个代理和一个路径。在这些之上,PathView本身也可以自定义一些属性的区间 通常会使用pathItemCount属性,它控制了一次可见的子项总数 preferredHighLightBegin属性控制了高亮区间 preferredHighlightEnd与highlightRangeMode控制了当前项怎样沿原创 2021-04-07 21:54:23 · 386 阅读 · 0 评论 -
MVD(四-形变的代理)
在下面的例子中,当点击链表项时,链表项都会展开填充整个链表视图 (ListView)。额外的间隔区域被用于添加更多的信息,这种机制使用一个状态来控制当一个链表项展开时,代理项都能输入expanded(展开)状态,在这种状态下一些属性被改变需要注意的点:1,模型、视图、代理:模型负责产生数据>>// 链表视图数据来源 ListModel { id: planets ListElement {..原创 2021-04-07 17:28:53 · 110 阅读 · 0 评论 -
MVD(三-视图加入动画)
为了方便使用,QML视图为每个代理绑定了两个信号,onAdd和onRemove。使用动画连接它们,可以方便创建识别哪些内容被添加或删除的动画import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 640 height: 480 title: qsTr("Hello World") // 主界面 Rectangle { width: p原创 2021-04-07 15:19:57 · 218 阅读 · 0 评论 -
MVD(二-动态视图)
ListViewimport QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Item { id: root Rectangle{ width: 80 height: 300原创 2021-04-07 11:17:56 · 185 阅读 · 0 评论 -
MVD(一-Model/View之Repeater)
分离数据与显示的基础模型 Repeater代码:import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 640 height: 480 title: qsTr("Hello World") // 定位器 Column{ spacing: 10 x:20 y:20 Repeater{原创 2021-04-07 10:36:18 · 233 阅读 · 0 评论 -
Animation(七-给状态的改变加过渡)
一系列的过渡能够被加入任何元素,一个过渡由状态的改变触发执行。 可以使用属性的from:和to:来定义状态改变的指定过渡。这两个属性就像一个过滤器,当过滤器为true时,过渡生效。 也可以使用“”来表示任何状态。例如from:""; to:"*"表示从任一状态到另一个任一状态的默认值,这意味着过渡用于每个状态的切换代码: // 加入过渡 transitions: [ Transition { from: "st原创 2021-04-07 09:35:21 · 91 阅读 · 0 评论 -
Animation(六-状态)
通常我们将用户界面描述为一种状态。 一个状态定义了一组属性的改变,并且会在 一定的条件下被触发。 在这些状态转化的过程中可以有一个过渡,定义了这些属性的动画或者一些附加的动作 当进入一个新的状态时,动作也可以被执行。代码:import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 640 height: 480 title: qsTr("Hello World")原创 2021-04-07 09:30:59 · 89 阅读 · 0 评论 -
Animation(五-足球动态移动)
我们要实现的效果:需求分析:涉及的 Animation:从左向右的x坐标转换(X1)。 从下往上的y坐标转换(Y1)然后跟着一个从上往下的Y坐标转换(Y2)。 整个动画过程中360度旋转先做背景:import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 480 height: 300 Item { id: root原创 2021-04-06 21:10:20 · 249 阅读 · 0 评论 -
Animation(四-动画分组)
动画分组例如你想同时运行几个动画并把他们连接起来,或者在一个一个的运行,或者在两个动画之间执行一个脚本。动画分组提供了很好的帮助,作为命名建议可以叫做一组动画有两种方法来分组:平行与 连续。 可以使用SequentialAnimation(连续动画)和ParallelAnimation(平行动画)来实现它们,它们作为动画的容器来包含其它的动画元素平行方式播放动画:import QtQuick 2.9import QtQuick.Window 2.2Window { id:ro原创 2021-04-06 17:16:49 · 235 阅读 · 0 评论 -
Animation(三-缓冲曲线)
缓冲曲线(Easing Curves)概念属性值的改变能够通过一个动画来控制,缓冲曲线属性影响了一个属性值改变的插值算法 我们前面已经定义的动画都使用了一种线性的插值算法,因为一个动画的默认缓冲类型是Easing.Linear一个线性插值算法将会在动画开始时使用from的值到动画结束时使用的to值绘制一条直线,所以缓冲类型定义了曲线的变化情况ClickedImage.xmlimport QtQuick 2.5Item { id: root width: con.原创 2021-04-06 16:29:59 · 501 阅读 · 0 评论 -
Animation(二-三种动画启动方式)
有很多种类型的动画:PropertyAnimation(属性动画)- 使用属性值改变播放的动画 NumberAnimation(数字动画)- 使用数字改变播放的动画 ColorAnimation(颜色动画)- 使用颜色改变播放的动画 RotationAnimation(旋转动画)- 使用旋转改变播放的动画 除了上面这些基本和通常使用的动画元素,QtQuick还提供了一切特殊场景下使用的动画:PauseAnimation(停止动画)- 运行暂停一个动画 SequentialAnima原创 2021-04-06 15:25:27 · 1641 阅读 · 0 评论 -
Animation(一-基本动画)
动画被用于属性的改变。一个动画定义了属性值改变的曲线! 所有在QtQuick中的动画都由同一个计 时器来控制,因此它们始终都保持同步,这也提高了动画的性能和显示效果每一个元素都提供了许多的属性,每一个属性都在等待使用动画先贴个图酷~人类看到任何会动的东西(包括桌面)都会喜欢,这可能和人类看到有生机的东西就会触发感情有关~import QtQuick 2.9import QtQuick.Window 2.2Window { id:window visible.原创 2021-04-06 14:32:36 · 176 阅读 · 0 评论 -
第一个Quick程序
第一个Quick程序原创 2021-04-05 10:03:48 · 69 阅读 · 0 评论 -
MainWindow漫谈
漫谈.1加速键和快捷键不一样加速键:alt + ...快捷键:ctrl + ...加速键用来启用文件菜单,快捷键用来启用菜单里面的动作!漫谈.2toolButtonStyle 设置图标和应用文本的显示及其相对位置 movabel 设置状态栏是否可以移动 allowedArea 设置允许停靠的位置 iconsize 设置图标的大小 floatable 设置是否可以悬浮 两点说明:往工具栏添加部件可以使用addWidge.原创 2021-04-03 07:42:58 · 228 阅读 · 0 评论