Qt Quick 如何入門?

TommyMusk發表於2018-05-05

為什麼選擇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





相關文章