qml 背景透明 图片显示正常_基于QML的 客户端软件开发流程

本文介绍了使用Qt Quick开发桌面客户端的基本流程,包括创建QML项目,实现登录和主页界面,利用Loader动态加载页面,以及添加C++底层逻辑。在登录页面中,当用户名和密码校验成功后,会显示带有背景图片的主页。文章还讨论了页面之间的信号传递和资源管理,强调了快速开发和GPU渲染的优势。
摘要由CSDN通过智能技术生成

一,背景

Qt Quick 作为Qt公司对移动端的一种尝试,无疑是失败的。生态的缺失,支持的不利,基本上看不到移动端有人用这套东西来开发应用,但是这套技术本身是不错的,快速的开发效率,gpu式的渲染方式,在取代传统QWidget 开发桌面应用方面,还是值得学习的。现结合多年使用经验,解析下Quick开发桌面客户端时,一个基本的开发流程。

二,demo

Quick  目前推荐的方式是界面与逻辑分离,界面采用qml开发,底层逻辑采用c++开发。其实一些简单的界面逻辑也可直接用js写在界面文件中,c++只负责核心的业务逻辑。

我们demo的需求是:

1,登录页面输入用户名和密码,点击登录。

2,校验成功后,跳转到主页,显示一张背景图片。

分析需求,涉及到两个页面,登录页和首页。涉及的底层逻辑是,用户名和密码校验。因此,两个界面使用QML开发,底层逻辑使用C++。

b1f079b25b866adcb6b98144975a82cd.png

三,具体实现

按照先开发页面再添加逻辑的流程。

1,利用QtCreator 建一个空的Quick项目:

2fc0c340a587cff6055283e213412a57.png

2,添加Login.qml 登陆页 及Home.qml 主页,还有一张背景图片

6ecc831eb013f7144a1704035931f09d.png

3,登录页

两个文本输入框,一个登陆按钮,以及一个登陆成功的信号。

页面间切换采用信号传递的方式,也就是说当前页面完成本身的任务后,通过激发信号告知外界。而什么时候激发这个信号,则是涉及到底层的逻辑判断,我们在点击【登陆】时,进行判断,如果符合要求则激发登陆成功信号。

b337be7d877964c5ba911fed2008c6be.png

4,主页

一个图片,一个退出按钮,一个退出信号。点击【退出】时,激发退出信号

bdca668e0bdd5d4b1063b79ec29484f1.png

5,页面跳转

两个页面有了,逻辑判断稍后填充。那么页面如何跳转呢,Quick 有两种方式,一种是通过静态隐藏的方式,就是说两种页面提前全部加载,当捕获到登陆成功信号时,将登陆页隐藏,主页显示,捕获到退出信号时,将主页隐藏,登陆页显示。还有一种是只加载一种页面,根据信号来动态加载。更推荐第二种方式,因为处理起来方便,并且内存占用小。

通过Loader加载器,默认加载登录页,当收到登陆成功信号后,动态加载主页。当收到退出信号后,动态加载登录页。

总结下来,流程就是先单独开发页面,当前页面任务完成后,激发信号。程序收到此信号后,动态加载其他页面。

0a4efb6064a076f4a5e41ab936820cd0.png

6,页面效果

52331a528207b02d2ffd950def1851bb.gif

7,添加底层逻辑

添加 maincontroller 类,将底层逻辑,添加到这个类中。当前demo 只涉及到用户名及密码的判断。

4d81562e13458ed98181f308093b11ba.png

d8d57ac74468a2bc8add69a8b13b4579.png

8,导入QML

将C++类导入到qml中,否则无法识别C++的类,导入按照作用域的分为两种方式。一种是临时的,相当于局部变量,只对当前QML文件可见,一种是永久的,对所有QML文件可见,相当于单列模式。具体使用哪种,按照这个类的作用进行选择,如果此类是所有qml文件都可能使用,那就导入成永久的,否则就使用临时的方式。下面使用的就是永久的方式,所有qml文件可见。

0d77301e6e5eaa417720596b48a3ef0d.png

 9,填充逻辑

界面有了,逻辑写完。最后将逻辑填充到界面对应部分。我们在界面处,进行判断。

9be8d2166d1edc8d0e59f1a427f212b9.png

10,最终效果

9a2681eaf5ed947cfc71671d62463ff6.gif

四,总结

eecf122391e2e2ed3cc2a73fb706ef66.png

如需 demo源码,请留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值