Qt Quick 如何入门?
为什么选择QT?
毕业设计要做一款基于GUI界面交互的自动售卖系统,在众多的GUI开发平台当中,我选择了QT。
QT相比与其他GUI开发平台来说,最大的优势是跨平台。按我的理解,就是写好的一份代码可以不用过多的修改就能移植到Linux系统、Windows系统,甚至是IOS系统。
或许因为我是一个Linux软件开发工程师,所以我会偏爱c/c++。其实也是一方面考虑到以后职业发展要用到C++。再加上通过这段时间对QT的体验,感觉GUI设计软件都有共通之处,所以也不必要去纠结哪个GUI开发平台,哪种语言好的问题?
用Qt Widgets 还是Qt Quick?
在学习一门新的技术之前需要了解全局。我看了看QT的介绍,了解到QT开发是分为两大派系,一个是Qt Widgets ,另一个是Qt Quick。
Qt Widgets是什么?
按照官网的定义:
The Qt Widgets Module provides a set of UI elements to create classic desktop-style user interfaces.
Qt Quick是什么?
按照官网的定义:
Qt Quick is a collection of technologies that are designed to help developers create the kind of intuitive, modern, and fluid user interfaces that are increasingly used on mobile phones, media players, set-top boxes, and other portable devices. Qt Quick consists of a rich set of user interface elements, a declarative language for describing user interfaces, and a language runtime. A collection of C++ APIs is used to integrate these high level features with classic Qt applications.
按照我的理解,Qt Widgets是适合传统桌面开发的UI库;Qt Quick是一种用qml语言开发的库,集成了很多绚丽的UI开发元素,能自动转化为c++语言运行,非常适合APP,嵌入式设备等要求界面冲击感强的应用场景。
按前辈的指引得知,
“对于传统的桌面程序来说,优先考虑使用 Qt Widgets,若要开发更“现代”的 UI 与高级应用,建议使用 Qt5.x + QML 2.x + QtQuick 2.x。”
“qml比较炫吧。比较适合移动端开发。widget对于pc端比较合适。兼容性更好。”qml比较炫吧。比较适合移动端开发。widget对于pc端比较合适。兼容性更好。“
Qt Quick利用一种类似java script 的qml语言进行开发,代码看上去就是json字符串的应用,对于c++水平不高的我来说是一个福利。
安装qt
1.到官网下载安装包:
https://download.qt.io/official_releases/qt/5.10/5.10.0/
2.一路安装就好,该安装的安装包全部安装上
面对Qt Quick如何入门?
学习一门新技术在了解全局后还需要确定范围。搞清楚Qt Quick的范围和边界,对于学习才有动力。我找到一本很好的书学习Qt Quick, 安晓辉的《Qt Quick核心编程》可以助我一臂之力。
按照我的归纳,以及项目应用需要,总结得出Qt Quick比较重要的有四大模块。
一是GUI界面基本组成元素和布局;
二是事件处理;
三是多媒体与网络;
四是qml语言的语法;
在确定范围后,就要定义目标,确定难易:
详细参考附录: Qt Quick比较重要的有四大模块难易点拆解
在定义好目标后,为了加快学习进度以及更有针对性,我在github上寻找项目资源帮助我更好了解Qt Quick开发的应用。如:
EiriniMits/ShopMyCloset:
https://github.com/EiriniMits/ShopMyCloset/blob/master/LICENSE
我通过参考上面的代码并且在该工程的基础上修改,即可快速有针对性的学习。
这是我Qt Quick学习的一些感悟,先总结到这。明天的事我们明天再聊,后面继续总结Qt Quick的学习经验。
~
附录:Qt Quick比较重要的有四大模块难易点拆解:
GUI界面基本组成元素和布局:
图形界面基本组成元素
基础:
TextInput
难点:
组件
可以自定义组件(类似可以自定义一个结构体)
图形界面元素布局
难点:
定位器
布局管理器
与布局相关的类库:
Item Layout
RowLayout 、
ColumnLayout 、
GridLayout
Item Positioner
anchors ,锚布局
Row ,行布局
Column ,列布局
Grid ,表格布局
Flow ,流式布局
常用元素:
行编辑
文本块
ProcessBar
画布:
基础:
基本组成
基本绘图模式
Model/View:
ListView
TableView
GridView
PathView
动画
基础:
动画分类
基本动画元素
难点:
三种模式
组合动画
qml语法:
整体难点:
对象
ECMAScript:
难点:
对象
宿主对象
C++与QML混合编程:
难点:
在QML中使用c++类和对象
在c++中使用QML对象
事件处理:
难点:
信号与槽:
定义信号
捕捉信号
信号处理器:
触发源的使用:
鼠标
键盘
定时器
触摸
多媒体:
基础:
播放音乐
视频
拍照
网络:
基础:
网络的对象
难点:
QML的Http
使用c++完成复杂的网络操作
参考:
Qt Widgets、QML、Qt Quick的区别
https://blog.csdn.net/liang19890820/article/details/54141552
Ubuntu16.04下安装QT5.8
https://blog.csdn.net/hhrock/article/details/61621044
Qt Quick 如何入门?相关推荐
- 【Qt Quick】零基础入门系列之安装与卸载(一)
[Qt Quick]概述 |本文大概阅读时间8分钟. |版权说明:原创文章,如需转载,请标明文章出处.https://blog.csdn.net/weixin_40192195/article/det ...
- Qt Quick 4小时入门-安晓辉-专题视频课程
Qt Quick 4小时入门-39905人已学习 课程介绍 Qt Quick(QML)是Qt 5里推荐的UI开发框架,能够为各种设备搭建流畅且绚丽的用户界面.本课程删繁就简,精心选择主 ...
- Qt Quick入门
Qt Quick入门 Qt Quick入门 创建警报项目 Qt创作者 其他源文件 输入新警报 编辑警报 删除警报 概括 Qt Quick入门 基于警报应用程序的Qt Quick教程. 本教程介绍如何开 ...
- 《Qt Quick 4小时入门》学习笔记4
http://edu.csdn.net/course/detail/1042/14806?auto_start=1 Qt Quick 4小时入门 第七章:处理鼠标与键盘事件 1.处理鼠标事件 鼠标信号 ...
- style 字体加粗_第9篇 Qt Quick入门教程之基础(九)文本显示和字体
导语 文本显示是界面开发必不可少的内容,在Qt Quick模块中提供了 Text 项目来进行文本的显示,其中可以使用 font 属性组对文本字体进行设置.这一篇我们来看看它们的具体使用. 使用字体 就 ...
- Qt 5入门指南之Qt Quick编程示例
Qt 5入门指南之Qt Quick编程示例 使用Qt创建应用程序是十分简单的.考虑到你的使用习惯,我们编写了两套教程来实现两个相似的应用程序,但是使用了 不同的方法.在开始之前,请确保你已经下载了Qt ...
- 【Qt5开发】Qt Quick/QML快速入门视频教程
learnqml 免费试看地址:https://jiaoyu.taobao.com/course/QKT_2081022 完整视频购买地址:https://item.taobao.com/item.h ...
- C++界面开发框架Qt新手入门指南 - 如何创建Qt Quick UI项目
Qt技术交流群:166830288 欢迎一起进群讨论 Qt Quick UI Prototype项目可用于测试或制作用户界面原型,或者用于为QML编辑设置单独的项目.您不能将它们用于应用程序 ...
- qt on android qml,Qt on Android: Qt Quick 之 Hello World 图文详解
在上一篇文章,<Qt on Android:QML 语言基础>中,我们介绍了 QML 语言的语法,在最后我们遗留了一些问题没有展开,这篇呢,我们就正式开始撰写 Qt Quick 程序,而那 ...
最新文章
- NC:MetaSort通过降低微生物群落复杂度以突破宏基因组组装难题
- 原本要与Hinton当同事,最后被迫Bengio门下读博? | 独立研究员的坎坷之路
- python导入自定义模块和路径问题
- 【iOS-Cocos2d游戏开发之十五】详解CCProgressTimer 进度条并修改cocos2d源码实现“理想”游戏进度条!...
- LAS点云查看 转换格式
- 十五、Redis三种特殊类型之二HyperLoglog
- js list添加元素_JS基础与常用函数
- 最长公共子序列(C语言)
- 循环队列的java结构_java数据结构之循环队列(数组实现)
- 程序设计爬楼梯问题_楼梯案例:解决楼梯问题的C ++程序
- github 部署mysql_GitHub - luckman666/deploy_mysql_cluster: 一键部署mysql集群
- 导致jquery.min.map 404 (Not Found)错误的原因
- iCloud 照片如何转移至谷歌相册?
- 数据结构算法常见面试考题
- 微软drive服务器,OneDrive:微软云存储服务
- 美国国家安全局(NSA)网络攻击主战武器NOPEN
- MyBatis注解开发方式
- 讯飞AIUI ubuntu linux使用
- IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应
- 自兴人工智能——Python第三课(字符串和字典)