QT5框架
文章目錄
- 2.1Qt的跨平臺性(Linux、Unix、、Mac OS、Android、iOS)
# 1.Qt5安裝
下載qt5 http://download.qt.io/official_releases/qt/5.8/5.8.0/
選擇qt-opensource-linux-x64-5.8.0.run
進入qt-opensource-linux-x64-5.8.0.run目錄下,修改文件權限:qt-opensource-linux-x64-5.8.0.run;
打開安裝界面: ./qt-opensource-linux-x64-5.8.0.run;
圖形化界面安裝;
進入Qt5.3.1/Tools/QtCreater/bin/,可以鼠標雙擊qtcreater啟動;
##1.1qt5中中文輸入(qt5.5版本之后這個方法就無效了)
安裝fcitx-frontend-qt5,如果安裝成功會在其下有個plugin目錄
sudo apt-get install fcitx-frontend-qt5
然后將/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so 復制到 qt安裝目錄下的Tools/QtCreator/bin/plugins/platforminputcontexts/和5.4/gcc_64/plugins/platforminputcontexts/下
Qt Creator是跨平臺的 Qt IDE,Qt Creator 的設計目標是使開發人員能夠利用 Qt 這個應用程序框架更加快速及輕易的完成開發任務。
#2.Qt5框架
2.1Qt的跨平臺性(Linux、Unix、、Mac OS、Android、iOS)
1.Qt/Windows對應的是GDI(Graphics Device Interface),它是Qt封裝的與GDI交流的API。而GDI是Windows下圖形繪制及顯示的主要API。
2.Qt/X11同樣是對X Windows的編程接口。Linux本身是沒有操作界面的,目前主流帶有操作界面的Linux系統都是基于X WIndows,X Windows是C/S框架的(就是所有的鼠標事件傳遞到X Windows的服務端處理之后對應在屏幕上顯示內容),Qt/X11使用Xlib直接與X服務器通信的。(GDI是集成到Windows內核的,而X Windows只是Linux系統的應用軟件而已)
3.Qt/Macintosh就不用說了。Carbon是Mac OS X下應用程序開發環境,包含了應用程序的圖形部分。目前主流的Cocoa好像使用更好。
上圖主要說明的是UI部分,Qt跨平臺都是調用本地的圖形風格。
##2.2Qt模塊
基本模塊
| Qt Core | 其他模塊使用的核心非圖形類 |
| Qt Gui | 圖形用戶界面(GUI)組件的基類。 包括OpenGL |
| Qt Multimedia | 音頻,視頻,廣播和相機功能的類 |
| Qt Multimedia Widgets | 用于實現多媒體功能的基于窗口小部件的類 |
| Qt Network | 使網絡編程更容易,更便攜的類 |
| Qt QML | QML和JavaScript語言的類 |
| Qt Quick | 用自定義用戶界面構建高度動態應用程序的聲明性框架 |
| Qt Quick-2 | |
| Qt SQL | 使用SQL進行數據庫集成的類 |
| Qt Test | 單元測試Qt應用程序和庫的類 |
| Qt Widgets | 使用C ++小部件來擴展Qt GUI的類 |
擴展模塊
| Qt 3D | 支持2D和3D渲染的近實時仿真系統的功能 |
| Qt Bluetooth | 提供對藍牙硬件的訪問 |
| Qt Concurrent | 在不使用低級線程原語的情況下編寫多線程程序的類 |
| Qt D-Bus | 通過D-Bus協議進行進程間通信的類 |
| Qt Location | 在QML應用程序中顯示地圖,導航和放置內容 |
| Qt NFC | 提供對近場通信(NFC)硬件的訪問 |
| Qt OpenGL | OpenGL支持類。不推薦使用Qt GUI模塊中的QOpenGL *類 |
| Qt Positioning | 提供位置,衛星和區域監控課程 |
| Qt Print Support | 使打印更容易和更便攜的類 |
| Qt Script | 用于編寫Qt應用程序的類可以編寫腳本。不推薦使用Qt QML模塊中的QJS *類 |
| Qt Script Tools | 使用Qt Script的應用程序的其他組件 |
| Qt SVG | 用于顯示SVG文件內容的類。支持SVG 1.2 Tiny標準的一個子集 |
| Qt WebChannel | 提供從HTML客戶端訪問QObject或QML對象的功能,以便將Qt應用程序與HTML / JavaScript客戶端無縫集成 |
| Qt WebChannel | 提供從HTML客戶端訪問QObject或QML對象的功能,以便將Qt應用程序與HTML / JavaScript客戶端無縫集成 |
| Qt WebSockets | 提供符合RFC 6455的WebSocket通信 |
| Qt XML | 注意:這個模塊不需要使用QXmlStreamReader和QXmlStreamWriter。他們已經是Qt Core的一部分了 |
| Qt XML Patterns | 支持XPath,XQuery,XSLT和XML模式驗證 |
##2.3qt qml和qt quick框架
QML是一種編程語言
Qt Qml為QML語言開發應用程序提供一個框架
Qt Quick是QML的一個標準庫,提供兩種接口:1.使用qml語言創建應用的qml接口和使用c++語言擴展qml的c++接口,使用QtQuick模塊,設計者和開發者可以很容易使用QML建立帶有流暢動畫的用戶界面,并將這些界面連接到后端的C++庫上面。
qt5中qml和qt quick完全分離,
這里Qt 4.x版本 提供的 Qt Quick 1 ,qt5.x版本主要用的是qt quick2.qt5.x版本為了兼容低版本,因此繼承了qt quick1
Quick1只能做一些變形旋轉而沒有更牛的特效了,因為QPainter確實不能做那個,然而qt quick2的功能比較厲害,因為經過了Qt GUI、OpenGL、Scene Graph三層封裝。強調的是如何高效的繪制圖形并按要求創建各種效果。所以里面包含了可視化類型(QML)、交互類型、動畫、模型視圖、粒子特效、渲染特效等。
#3.QML語言
介紹完了qt5框架,接下來學習下qml語言
通常我們在構建ui界面的時候有兩種方式,1.用qml語言來編寫ui界面,2.我們創建的qt quick application目錄中有個.ui.qml來繪制ui界面,(layout形式繪制)
第二種方法繪制的ui界面占用的內存相對大些
第二種方法繪制ui
使用第一種方法就要學習qml語言
##3.1qml中基本元素:
###3.1.1 基本可視化項
Item 基本的項元素 在QML中所有可視化都繼承他
Rectangle 基本的可視化矩形元素
Gradient 定義一個兩種顏色的漸變過程
GradientStop 定義個顏色,被Gradient使用
Image 在場景中使用位圖
BorderImage(特殊的項) 定義一張圖片并當做邊界
AnimatedImage 為播放動畫存儲一系列的幀
Text 在場景中使用文本
TextInput 顯示單行可編輯的純文本
TextEdit顯示多行的可編輯文本
IntValidator int 驗證器
DoubleValidator double 驗證器
RegExpValidator 驗證字符串正則表達式
TextEdit 顯示多行可編輯文本
###3.1.2基本的交互項(事件處理)
MouseArea 鼠標句柄交互
MouseEvent鼠標事件
WheelEvent滾動事件
DrangEvent拖放事件
FocusScope 鍵盤焦點句柄
focus鍵盤事件
Flickable 提供一種瀏覽整張圖片的一部分的效果,具體看例子
Flipable 提供一個平面,可以進行翻轉看他的前面或后面,具體看例子
Timer定時器
###3.1.3狀態
State 定義一個配置對象和屬性的集合
PropertyChanges 使用一個State描述屬性的改變
StateGroup 包含一個狀態集合和狀態變換
ParentChange 重新定義父集,也就是換個父節點
AnchorChanges 在一個狀態中改變anchors
###3.1.4圖形效果
使用圖形效果模塊,要在.qml文件中導入
import QtGraphicalEffects 1.0
Gradient 定義一個兩種顏色的漸變過程
Blend混合效果
Color顏色效果
Distortion變形效果
DropShadow陰影效果
Blur模糊效果
Glow發光效果
OpacityMask遮罩效果
###3.1.5動畫和變換
Behavior 默認的屬性變換動畫
SequentialAnimation 對定義的動畫串行播放
ParallelAnimation 對定義的動畫并行播放
PropertyAnimation 屬性變換動畫
NumberAnimation 對實數類型屬性進行的動畫
Vector3dAnimation 對QVector3d進行的屬性
ColorAnimation 顏色進行的變換動畫
RotationAnimation 對旋轉進行的變換動畫
ParentAnimation 對父節點進行變換的動畫,改變綁定的父節點
AnchorAnimation 對anchor 進行改變的動畫
PauseAnimation 延遲處理
SmoothedAnimation 允許屬性平滑的過度
SpringAnimation 一種加速的效果
PropertyAction 允許在動畫過程中對屬性的直接改變
ScriptAction 允許動畫過程中調用腳本
Transition 在狀態變換中加入動作變化
###3.1.6工作中的數據
Binding 在創建的時候綁定一些數據到一些屬性
ListModel 定義鏈表數據
ListElement 定義ListModel的一個數據項
VisualItemModel 包含可視化項(visual items)到一個view中,相當是一個容器
VisualDataModel 包含一個model和一個delegate,model包含需要的數據,delegate設計顯示的項的信息,具體的去看例子
Package 他的目的是把VisualDataModel共享給多個view,具體還要學習
XmlListModel 特殊的一個模式使用XPath表達式,使用xml來設置元素,參考例子
XmlRole XmlListModel的一個特殊的角色
###3.1.7視圖
ListView 提供一個鏈表顯示模型視圖
GridView 提供一個網格顯示模型視圖
PathView 提供一個內容沿著路徑來顯示的模型
Path 定義一個PathView使用的軌跡
PathLine 定義一個線性的軌跡
PathQuad 定義一個二次貝塞爾曲線的軌跡
PathCubic 定義一個三次貝塞爾曲線的軌跡
PathAttribute 允許綁定一個屬性上,具體看例子
PathPercent 修改item分配的軌跡 不是很明了其中的意思
WebView 允許添加網頁內容到一個canvas上
###3.1.8定位器(布局管理)
Column 將幾個子項目排成一列
Row 將幾個子項目排成一行
Grid 設置它的子項目到一個網格上
Flow 目的是不讓他的子項重疊在一起,將子項目從前向后,像流一樣布局
anchors錨
Layouts布局管理器
LayoutMirroring在水平方向鏡像錨布局
###3.1.9實用
Connections 明確連接信號和信號句柄
Component 封裝QML items 想一個組件一樣
Timer 提供時間觸發器
QtObject 基本的元素只包含objectName屬性
Qt qml全局Qt object提供使用的枚舉和函數
WorkerScript 允許在QML使用線程
Loader 控制載入item或組件
Repeater 使用一個模型創建多個組件
SystemPalette 為Qt palettes提供一個通道
FontLoader 載入字體根據名字或URL
LayoutItem 允許聲明UI元素插入到qtGraphicsView 布局中
###3.1.10變換
Scale 分派item 縮放行為
Rotation 分派item 旋轉行為
Translate 分派item 移動行為
下面文章將會介紹Qt quick中項目屬性
總結
- 上一篇: mysql触发器实例
- 下一篇: s3c2440移植MQTT