1. 程式人生 > >Qt5簡介及Qt5基本框架

Qt5簡介及Qt5基本框架

使用Qt5.x版本中的不同方面來開發應用程式,著重於新的Qt Quick的技術,提供了編寫C++後端的必要內容,並擴充套件了QtQuick。    本章提供了關於Qt5高層次的概述。它對開發者有效的展示了不同的應用模式並且使用Qt5對應用程式進行預演。此外,該章的目的是提供Qt5內容的廣泛概述以及如何聯絡Qt5的創造者。 一、前言 Qt5重點    Qt5是對非常成功的Qt4的完整補充。截止Qt4.8,Qt4已經歷了7年。現在是時候做出一個更令人稱奇的工具包,Qt5主要聚焦於以下內容:
  • 出色的圖形:Qt Quick2基於OpenGL(ES)來構建場景檢視。重寫的圖形堆疊提供的圖形效果與易用性在這一領域達到了從未有過的一個新高度。
  • 開發者生產力:QML和JavaScript是用於建立使用者介面的主要手段。後端由C++驅動。JavaScript和C++之間的分割為前端開發人員集中精力創造漂亮的圖形介面,後端的C++開發人員集中精力在穩定性、效能、延長執行時間提供了一個快速迭代
  • 跨平臺移植:隨著綜合的Qt平臺抽象,它現在可以更容易、更快地移植到一個更廣泛的平臺。Qt5圍繞著Qt必備模組和附加元件,它允許作業系統開發人員專注於要領模組,並引出一個較小的執行時概念。
  • 開放式開發:Qt目前在Qt-Project中真正開放。發展是開放的、社群性的。
二、Qt5介紹 Qt Quick Qt Quick是Qt5中使用的使用者介面技術,Qt Quick的本身是多種技術的集合:
  • QML - 標記語言使用者介面
  • JavaScript - 動態指令碼語言
  • Qt C++ - 高度便攜增強的C++庫
   與HTML類似,QML是一種標記性語言。元素被標記在QtQuick的花括號Item{}中。它為建立使用者介面、開發人員高效性、易於閱讀性而設計。使用者介面可以使用JavaScript程式碼來增強。QtQuick能夠很容易使用QtC++來擴充套件自己的本地功能。簡而言之UI被稱為前端,本地部分稱為後端。這可以讓你從使用者介面部分分割應用程式的密集計算和本地操作。    在一個典型的專案裡,前端開發使用QML/JavaScript,後端程式碼、系統介面則使用QtC++開發。這讓介面開發人員和功能開發人員之間的有一個自然的分割。通常情況下,後臺使用Qt自己的單元測試框架進行測試,匯出給前端開發人員使用。    讓我們用QtQuick建立一個簡單的介面,它可以展示QML語言的某些方面。最終,我們設計一個旋轉風輪。    從一個main.qml空文件開始,所有的QML檔案將以.qml結尾,作為一個標記性語言(如HTML)QML文件需要一個且只有一個根元素—在例子中有相同寬度、高度(500畫素)的Rectangle元素。
import
QtQuick2.0
Image{
    id:root
    source:"Images/background.png"
}
    因為QML不作任何限制,元素型別使用Image作為根元素,使用source屬性作為根元素的背景影象。
注:
    每個元素都具有屬性,例如一個圖象,有width、height,還有其它屬性,像source。影象元素的size屬性從影象尺寸自動扣除。否則,我們就需要設定width、height屬性為一些有用的畫素值。
    最標準的元素都位於QtQuick 2.0模組—我們在第一行包含的import語句。
    id特殊屬性是可選的,幷包含一個識別符號,後來在在檔案的其它地方中引用這個元素。重要提示:
id屬性一旦被設定就不能被更改,且不能在執行時設定。使用root作為ID為根元素只是一種作者的習慣,在較大QML文件中引用最頂層元素則可以預測。
    風輪的使用者介面的前景元素放置被替換為另一個圖片。
    通常情況下你的使用者介面將被由許多不同的元素型別,而不僅僅是Image元素,像下面這個例子:
importQtQuick2.0
Image{
    id:root
    Image{
        id:wheel
        anchors.centerIn:parent
        source:"Images/pinwheel.png"
    }
}
    使用anchor屬性放置風輪在中央位置,錨允許指定父和兄弟姐妹物件之間的幾何關係。放在另一個元素的中心(anchors.centerIn: parent)。有left、right、top、bottom、centerIn,、fill、verticalCenter、horizontalCenter關係。當然,他們需要匹配,若錨在頂部元素的左側則它沒有任何意義。
    所以我們設定風輪作為背景在父窗體的中心。
注:
    有時候你需要精確做小的調整。這將有可能用anchors.horizontalCenterOffset或anchors.verticalCenterOffset。類似的調整屬性也適用於所有其它錨。請諮詢錨屬性的完整列表的文件。
    將一個影象作為根矩形元素的子元素展現了一種宣告式語言的一個重要概念。描述使用者介面層和分組的順序,其中最頂層(矩形)是首先繪製的,子層在包含元素的區域性座標系中繪製。
    為了使展現變得更有趣,我們想加上互動。想法是,當用戶按下滑鼠中的某處場景以便轉動風輪。使用MouseArea元素。
importQtQuick2.0
Image{
    id:root
    Image{
        id:wheel
        anchors.centerIn:parent
        source:"Images/pinwheel.png"
        MouseArea{
            anchors.fill:parent
            onClicked:wheel.rotation+=90
        }
    }
}
    當用戶點選它裡面的覆蓋面積時,滑鼠區域發出的訊號。可以連線到這個訊號來覆蓋onClicked功能。在這種情況下,參考風輪影象90度旋轉。
注: 
    這適用於每一個訊號,命名為:on + SignalName(如:onClicked)。當所有屬性值發生了改變時,還發出一個訊號,命名為:on + PropertyName + Changed(如:onValueChanged)。
    如果一個屬性改變你可以用onWithChanged觀察。
    現在,風輪可以旋轉,但仍然不流利。旋轉屬性將立即更改。我們希望,屬性90度改變隨著時間的改變來進行。現在動畫開始發揮作用。要啟用此我們使用一個動畫型別呼叫屬性的行為,它指定定義屬性的行為的每一個變化。這僅是幾種型別宣告一個動畫。
importQtQuick2.0
Image{
    id:root
    Image{
        id:wheel
        anchors.centerIn:parent
        source:"Images/pinwheel.png"
        MouseArea{
            anchors.fill:parent
            onClicked:wheel.rotation+=90
        }
        Behavioronrotation{
            NumberAnimation{
                duration:250
            }
        }
    }
}
    現在,每當風輪旋轉改變時,將會使用NumberAnimation為250毫秒的持續時間進行動畫處理。因此,每個90度的旋轉將消耗250毫秒。
    現在,風輪看起來已經好多了。希望這可以讓你更好地理解關於Qt Quick的程式是怎麼工作。
Qt的構建模組
    Qt5包括大量的模組。一般來說一個模組是開發者使用的庫。有些模組在Qt應用平臺裡是強制性的。他們形成了一套名為Qt的必備模組。也有很多模組都是可選的,並形成了Qt新增功能模組。大多數開發人員不需要使用它們,但很高興知道它們為共同挑戰提供了無價的解決方案。
三、Qt的必備模組
    Qt的必備模組強制應用在Qt啟用平臺裡。他們提供的基礎開發現代Qt5應用程式使用Qt Quick 2。
核心基礎模組
    Qt5模組的最小集合進行QML程式設計。
 模組  描述
 Qt Core  使用其它模組的核心非圖形類
 Qt GUI  圖形使用者介面(GUI)元件的基礎類,包括OpenGL的。
 Qt Multimedia  處理音訊、視訊、廣播、攝像頭功能的類。
 Qt Network  使網路程式設計更容易,更輕便的類。
 Qt QML  QML和JavaScript的類
 Qt Quick  自定義使用者介面構建高度動態的應用程式的宣告性框架
 Qt SQL  使用SQL整合資料庫的類
 Qt Test  進行Qt應用程式和庫單元測試的類
 Qt WebKit  基於WebKit2實現的一個新的QML API類。參見Qt WebKitWidgets模組。
 Qt WebKit Widgets  Qt4中,WebKit1和QWidget-based類。
 Qt Widgets  用C++部件擴充套件Qt圖形介面的類。
Qt外掛
    除了必不可少的模組,Qt還提供了軟體開發的附加模組,它不是發行版的一部分。以下是附加模組的一個簡短的列表。
  • Qt 3D                 一組使3D圖形程式設計更容易和詳述的API。
  • Qt Bluetooth           使用藍芽無線技術平臺的C++和QML的API。
  • Qt Contacts            訪問地址簿/聯絡人資料庫的C++和QML的API。
  • Qt Location           提供了位置定位、測繪、導航、位置搜尋的C++和QML的API。 NMEA的後端定位。
  • Qt Organizer           訪問的組織事件(待辦事項,事件等)的C++和QML的API
  • Qt Publish and Subscribe
  • Qt Sensors             訪問感測器的C++和QML的API。
  • Qt Service Framework    使應用程式能夠讀取,瀏覽和訂閱更改通知的C++和QML的API。
  • Qt System Info         發現系統相關的資訊和功能。
  • Qt Versit             支援電子名片和的iCalendar格式
  • Qt Wayland             只有Linux。包括Qt CompositorAPI(伺服器)和Wayland平臺外掛(客戶端)
  • Qt Feedback            觸覺和聲音反饋給使用者操作。
  • Qt JSON DB             Qt的一個無SQL物件儲存。
注:
    這些模組不是發行版的一部分,取決於有多少活躍的貢獻者以及如何得到測試。
四、支援的平臺
    Qt支援多種平臺。主要桌面和嵌入式平臺也支援。通過Qt應用程式的抽象,如今可以則可以更容易地移植到自己的平臺上。
    在一個平臺上測試Qt5比較耗時。一個子平臺被qt-project選中來構建參考平臺。這些平臺通過系統測試徹底測試,以確保最佳的質量。不過提醒你:沒有程式碼錯誤是免費的。

相關推薦

Qt5簡介Qt5基本框架

使用Qt5.x版本中的不同方面來開發應用程式,著重於新的Qt Quick的技術,提供了編寫C++後端的必要內容,並擴充套件了QtQuick。    本章提供了關於Qt5高層次的概述。它對開發者有效的展示了不同的應用模式並且使用Qt5對應用程式進行預演。此外,該章的目的是提供

.netcore持續整合測試篇之開篇簡介Xunit基本使用

系列目錄 為了支援跨平臺,微軟為.net平臺提供了.net core test sdk,這樣第三方測試框架諸如Nunit,Xunit等只需要按照sdk提供的api規範進行開發便可以被dotnet cli工具呼叫,這樣就解決了在持續整合過程中第三方框架依賴於windows平臺上的各自runner的問題,使得

Spring框架入門(一)簡介三種基本注入方式例項

目錄 1介面注入 2設值注入 配置:導包 配置檔案: 測試類: 配置檔案: Test: 一、基本含義 Spring框架主要降低程式的耦合性,耦合性的意思為實現介面和實現類之間的關聯性,S

Qt入門之基礎篇 ( 一 ) :Qt4Qt5的下載與安裝

mingw ins 第3版 點擊 調試 但我 關系 構建 eas 轉載請註明出處:CN_Simo. 導語: Qt是一個跨平臺的C++圖形界面應用程序框架。它提供給開發者建立圖形用戶界面所需的功能,廣泛用於開發GUI程序,也可用於開發非GUI程序。Qt很容易擴展,並

JS/JavaScript簡介基本常識

標記 非模態 ava javascrip ron 窗口 模式 賦值 窗體 JavaScript   (JS)以客戶端事件為驅動的弱類型腳本語言   JS腳本一般寫在<head>內部   流:文本流、html流   回避關鍵字的基本策略:單詞合並(v_fu

CSS簡介基本知識

htm 線型 行內樣式 HR 註意 長春 cell 設置方法 GC (CSS)cascading style sheets:層疊樣式表。級聯式樣式表,簡稱:樣式表。 Sheets :就是一個樣式文件,它的擴展名為.css Style:外觀,個性化 樣式表的位置 為了學習

SpringBoot框架簡介搭建

pro org 除了 運行 maven sha 方法 variable tid Spring Boot 簡介 1. 什麽是SpringBoot 1.1 Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。

Django框架簡介模板Template

爸爸 特殊符號 html標簽 地址 [] slice ++ kong urn Django框架簡介 MVC框架和MTV框架 MVC,全名是Model View Controller,是軟件工程中的一種軟件架構模式,把軟件系統分為三個基本部分:模型(Model)、視圖(Vie

Ajax / Javascript 框架簡介集合列表

Ajax / Javascript 框架簡介及集合列表 AJAX框架能夠幫助我們快速開發能夠通過JavaScript呼叫WebService(Server Page)的網頁,而不必要提交整個頁面。近來的web應用都使用AJAX來提高網頁的可互動性和實現更好的功能。目前網際網路上有上百個AJ

Mongodb簡介基本操作

一、簡介 MongoDB是一款強大、靈活、且易於擴充套件的通用型資料庫 MongoDB 是由C++語言編寫的,是一個基於分散式檔案儲存的開源資料庫系統。 在高負載的情況下,新增更多的節點,可以保證伺服器效能。 MongoDB 旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。 MongoDB

Ribbon 框架簡介搭建(沒有與SpringCloud整合,獨立使用)

Ribbon簡介 1.  負載均衡框架,支援可插拔式的負載均衡規則 2.  支援多種協議,如HTTP、UDP等 3.  提供負載均衡客戶端 Ribbon子模組 1.  ribbon-core(ribbon的核心,主要包含負載均衡器、負載均衡介面、客戶端介面

Tomcat(一) Tomcat是什麼:Tomcat與Java技術 Tomcat與Web應用 以及 Tomcat基本框架相關配置

轉載自:http://blog.csdn.net/tjiyu/article/details/54590259 Tomcat(一) Tomcat是什麼: Tomcat與Java技術 Tomcat與Web應用 以及 Tomcat基本框架及相關配置  &nb

jhipster框架簡介搭建

jhipster框架 Jhipster是為您生成一個完整的現代Web應用程式或微服務架構: 它使用Spring Boot在伺服器端實現高效能和強大的Java堆疊,這是一款時尚,現代,移動優先的前端,配有Angular,React和Bootstrap,一個強大的微服務架構,

物聯網基本框架關鍵技術

訊息觸達能力是物聯網(internet ofthings, IOT)的重要支撐,而物聯網很多技術都源於移動網際網路。本文闡述移動網際網路訊息推送技術在物聯網中的應用和演進。 一、物聯網架構和關鍵技術 IP互聯架構已是物聯網的事實標準(有關物聯網TCP/IP層關鍵技術將另文闡述,敬請關注

SSM框架簡介整合教程

1.Spring Spring 框架是 Java 應用最廣的框架,它的成功來源於理念,而不是技術本身,它的理念包括 IoC (控制反轉) 和 A面向切面程式設計)。Spring框架是個輕量級的Java EE框架,所謂輕量級,是指不依賴於容器就能執行的。簡單來說,Spring是一個輕量級的控制反轉

位運算簡介基本技巧

目錄 位運算基礎: 常用位運算操作技巧: 綜合例子: 是否2的冪次: 計算在一個 32 位的整數的二進位制表示中有多少個 1: 互換資料: 變化符號: 求絕對值: 參考: 位運算基礎: 符號

Java類集框架(一):簡介Collection介面

簡介 在實際專案中,涉及到儲存多個物件的操作往往會用到陣列。然而傳統的陣列存在一個問題:長度是固定的。Java 2提供了一個專門實現資料結構的開發框架——類集框架,框架的程式介面和類都儲存在java.util包中,其最為核心的用處就在於實現了動態物件陣列的操作,定義了大量的操作標準,核心

大資料離線---網站日誌流量分析系統(1)---簡介框架

本次介紹網站日誌流量分析系統,首先是簡介和架構。後面會對架構中需要的每個模組的進行逐個介紹。本篇主要分為兩個部分 網站日誌流量分析系統簡介 整體技術流程和架構 1. 網站日誌流量分析系統簡介 1.1點選流資料模型 點選流的概念 點選流( Cl

flask框架系列教程(一) flask簡介虛擬環境搭建

flask簡介      博主快兩個月沒更新了,原因是私下學了前端,奈何前端東西太多,即便以後想去做後端,也要明白JS jquery,這個有時間再發自己的理解,最近開始學習flask了,希望與諸位看客共同進步。前期先講基礎,過一段時間會把整個網站的建設過程發出來。  

iOS CocoaPods簡介基本使用

級別: ★☆☆☆☆ 標籤:「iOS」「CocoaPods」「依賴庫」 作者: MrLiuQ 審校: QiShare團隊 問題:在我們日常開發中,難免會用到一些第三方庫(比如AFNetworking、SDWebImage...),而這些第三方庫也許會引用一些別的第三方庫,於是我們又要引入別的第