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