相框怎么做(如何用卡纸做相框)

今天就和大家分享一下:如何用Qt实现一个电子相框?运行效果:代码链接:https://doc . Qt . io/Qt-5/Qt multimedia-mult

今天就和大家分享一下:

如何用Qt实现一个电子相框?

运行效果:

相框怎么做(如何用卡纸做相框)插图

代码链接:

https://doc . Qt . io/Qt-5/Qt multimedia-multimedia widgets-video widget-example . html

实现难度:

★★★☆☆

访问照片

窗口{ [...]文件对话框{ [...]on accepted:folder model . folder = file URL+& # 34;/"}项目{ [...]Repeater { model:FolderListModel { id:folder model } Rectangle {[...]图像{ [...]source:folder model . folder+fileName } } } Image { source:& # 34;qrc:/resources/folder . png & # 34;mousearea { on clicked:file dialog . open()} } file dialog用于提供选择文件/目录的功能。这里,我们用它来选择照片所在的目录。

Repeater将根据model中的数据重复构建多个相同的控件,这里我们通过它创建所有照片载体控件。

Repeater的数据源是FolderListModel,FolderListModel提供的数据是一个目录下的所有内容,这里对应的是照片。

嵌入式物联网需要学习的东西很多,不要学错路线和内容,会导致一次工资失败!

免费分享一个数据包,差不多150g以上。学习内容,面经,项目都比较新,比较全!估计买几条鱼至少要几十。

点击这里找助手0元领取:嵌入式物联网学习资料(头条)

相框怎么做(如何用卡纸做相框)插图(1)

相框怎么做(如何用卡纸做相框)插图(2)

运行效果:

相框怎么做(如何用卡纸做相框)插图(3)

点击左上角的文件夹图标,会弹出一个目录选择框。

我选择的目录里有三个微信官方账号的头像,但是我这里只看到一个头像,因为都是重叠的。

设置初始状态

项目{[...]中继器{[...]rectangle { ID:photo frame//随机缩放照片:root.height/math.max(image . source size . width,image . source size . height)* math . max(0.3,Math.random () [...] component.on已完成:{//随机生成照片的位置和旋转角度x = math . random()* root . width-width/2y = math . random()* root . height-height/2 rotation = math . random()* 20-10 } image { ID:image source:folder model . folder+filename[...]}}} JavaScript可以在QML使用。这里我们使用math.random()生成随机数,从而随机化照片放置位置和旋转角度。

Scale属性用于支持照片的缩放。

运行效果:

相框怎么做(如何用卡纸做相框)插图(4)

为了解释这是一个不同的文件,我显示了文件名。

正如你所看到的,在初始化过程中已经支持照片的随机放置和缩放。

但是,此时您不能单独移动照片。

支持移动照片

矩形{ id: photoFrame [...]mouse area { id:drag area anchors . fill:parent drag . target:photo frame on pressed:{ photo frame . z = ++ root . highestz;console . log(photo frame . z)} } mouse area用于支持鼠标点击事件。当用户点击一张图片时,我们将其z属性调整到最大值。

z属性用于设置控件的z轴坐标。z值越大,显示的优先级越高。

Drag.target用于支持拖动事件。

运行效果:

相框怎么做(如何用卡纸做相框)插图(5)

选中的照片会显示在最顶层,然后可以用鼠标移动选中的照片。

支持缩放照片

矩形{ id: photoFrame [...] MouseArea { id: dragArea [...]on wheel:{ if(wheel . modifiers & Qt。control modifier){ photo frame . rotation+= wheel . angleδy/120 * 5;if(math . ABS(photo frame . rotation)& lt;4)photo frame . rotation = 0;} else { photo frame . scale+= photo frame . scale * wheel . angle delta y/120/10;if(photo frame . scale & lt;0.1)photo frame . scale = 0.1 } } } mouse area . wheel用于处理鼠标滚轮事件。

按住Ctrl键时,滚动滚轮可更改照片的旋转角度。

不按住Ctrl键时,滚动滚轮来更改照片的大小。

运行效果:

相框怎么做(如何用卡纸做相框)插图(6)

定时更新内容

窗口{ [...]函数刷新(){ [...]folder model . folder = & # 34;"folder model . folder = folderPath } Timer { id:update Timer interval:60000 on triggered:{ refresh()update Timer . restart()} }快捷方式{ sequence:& # 34;F5 & # 34激活时:{ refresh()update Timer . restart()} } Timer用于创建定时器,触发持续时间由间隔决定。时间到了,调用refresh()刷新显示的照片。

快捷键用于创建键盘快捷键功能,其中绑定了F5键。

运行效果:

相框怎么做(如何用卡纸做相框)插图(7)

我把自动刷新时间设置为3秒,让它先自动刷新,然后我手动按F5,刷新也成功了。

到目前为止,虽然程序还有待完善,但已经实现了电子相框的基本功能,有兴趣的朋友可以进一步研究代码。

感谢阅读~ ~ ~

原文链接:https://mp.weixin.qq.com/s/KCZQcjRxIQIlyoEig1adVg

文章转载自:老吴嵌入式

文章来自:送老婆,1小时为家人做一个漂亮的电子相框| Qt举例

原文链接:送老婆,1小时为家人做一个漂亮的电子相框| Qt举例

版权声明:本文来自网络,免费传递知识。版权归原作者所有。如涉及版权问题,请联系我删除。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/98612.html

发表回复

登录后才能评论