C++QT教程3——手冊4.11.1自帶教程(筆記)——創建一個QT快速應用

文章目錄

  • 創建一個QT快速應用
    • 創建項目
    • 創建主視圖
    • 添加應用邏輯
    • 為視圖添加動畫
    • 素材文件
  • 參考文章

創建一個QT快速應用

本教程使用內置的QML類型,介紹了Qt Quick的基本概念。有關可以選擇的用戶界面選項的更多信息,請參閱用戶界面。

本教程描述了如何使用Qt Creator實現Qt Quick狀態和過渡。我們創建一個應用程序,在單擊頁面上的三個矩形時,顯示一個移動的Qt標志。

關于QML:

QML(Qt Meta-Object Language)類型是一種用于構建用戶界面的聲明性語言。它是Qt Quick框架的核心組成部分,用于描述應用程序的外觀和行為。
QML類型是可重用的元素,可以通過組合和嵌套來創建復雜的用戶界面。每個QML類型都有屬性、信號和方法,可以在其他QML類型中使用和操作。
Qt提供了一些內置的QML類型,如Rectangle(矩形)、Text(文本)、Image(圖片)等,這些類型可以直接在QML文件中使用。此外,還可以創建自定義的QML類型,以滿足特定的需求。
使用QML類型,可以通過簡單而直觀的方式構建現代、響應式和動態的用戶界面。它使得開發者能夠更輕松地實現界面的交互和動畫效果。

在這里插入圖片描述

有關在設計模式下開發Qt Quick應用程序的更多信息,請參閱開發Qt Quick應用程序。

有關使用Qt Quick控件的示例,請參閱Qt Quick控件示例。

創建項目

  1. 選擇“文件”>“新建文件或項目”>“應用程序”>“Qt Quick應用程序-滑動”>“選擇”。
  2. 在“名稱”字段中輸入應用程序的名稱。
  3. 在“創建位置”字段中輸入項目文件的路徑,然后選擇“下一步”(或在macOS上選擇“繼續”)。
  4. 在“構建系統”字段中,選擇要用于構建和運行項目的構建系統:qmake、CMake或Qbs。
  5. 在“Qt Quick控件樣式”字段中,選擇要使用的預定義UI樣式之一,然后選擇“下一步”。
  6. 選擇要為其構建應用程序的平臺的工具集。要構建適用于移動設備的應用程序,請選擇Android ARM和iPhone OS的工具集,然后單擊“下一步”。

注意:如果已在“工具”>“選項”>“工具集”(Windows和Linux)或“Qt
Creator”>“首選項”>“工具集”(macOS)中指定了工具集,則會列出工具集。

  1. 選擇“下一步”。
  2. 查看項目設置,然后單擊“完成”(或在macOS上單擊“完成”)。

Qt Creator生成兩個UI文件,Page1Form.ui.qml和Page2Form.ui.qml,以及一個QML文件,main.qml。可以在表單編輯器中修改Page1Form.ui.qml以創建應用程序的主視圖,并在文本編輯器中修改main.qml以添加應用程序邏輯。對于本示例,可以忽略Page2Form.ui.qml。

創建主視圖

應用程序的主視圖在視圖的左上角顯示一個Qt標志和兩個空矩形。

要在應用程序中使用qt-logo.png圖像,必須將其從Qt示例目錄復制到項目目錄(與QML文件相同的子目錄)。該圖像將顯示在資源中。也可以使用任何其他圖像或QML類型。

  1. 在Projects視圖中,雙擊打開Page1Form.ui.qml文件以在設計模式下編輯。
    在這里插入圖片描述

  2. 在導航器中,選擇Label并按Delete鍵刪除它。

  3. 在導航器中選擇Page,并在Id字段中輸入page。

  4. 在Library > Resources中,選擇qt-logo.png并將其拖放到導航器中的頁面上。
    在這里插入圖片描述
    a. 在Id字段中輸入icon。
    b. 在Position字段中,將X設置為10,Y設置為20。

  5. 在Projects視圖中右鍵單擊資源文件qml.qrc,并選擇Add Existing File將qt-logo.png添加到用于部署的資源文件中。

  6. 將一個Rectangle拖放到導航器中的頁面上,并編輯其屬性。
    在這里插入圖片描述
    a. 在Id字段中輸入topLeftRect。
    b. 在Size字段中,將W設置為55,H設置為41,使矩形大小與圖像大小相匹配。
    c. 在Color字段中,點擊(透明)按鈕使矩形透明。
    d. 在Border color字段中,將邊框顏色設置為#808080。
    e. 點擊Layout,然后點擊(Top)和(Left)錨定按鈕將矩形錨定到頁面的左上角。
    f. 在Margin字段中,為頂部錨點選擇20,為左側錨點選擇10。
    在這里插入圖片描述

  7. 從庫中將Mouse Area類型拖放到導航器中的topLeftRect上。

  8. 點擊Layout,然后點擊在這里插入圖片描述
    (Fill to Parent)按鈕將鼠標區域錨定到矩形上。

  9. 在導航器中,通過按Ctrl+C復制topLeftRect,并按Ctrl+V將其粘貼到頁面上兩次。Qt Creator會將新實例命名為topLeftRect1和topLeftRect2。

  10. 選擇topLeftRect1并編輯其屬性:
    a. 在Id字段中輸入middleRightRect。
    b. 在Layout中,選擇在這里插入圖片描述
    (垂直居中錨定按鈕),然后選擇在這里插入圖片描述
    (右側)錨定按鈕將矩形錨定到其父級的中右邊距。
    c. 在Margin字段中,為右側錨點選擇10,為垂直居中錨點選擇0。

  11. 選擇topLeftRect2并編輯其屬性:
    a. 在Id字段中輸入bottomLeftRect。
    b. 在Layout中,選擇在這里插入圖片描述
    (底部)和在這里插入圖片描述
    (左側)錨定按鈕將矩形錨定到其父級的左下邊距。
    c. 在Margin字段中,為底部錨點選擇20,為左側錨點選擇10。

  12. 在導航器中,選擇每個類型的在這里插入圖片描述
    (導出)按鈕以將所有類型導出為屬性。這使可以在main.qml文件中使用這些屬性。

  13. 按Ctrl+S保存更改。

要檢查的代碼,可以在文本編輯器中查看Page1Form.ui.qml文件,并將其與Page1Form.ui.qml示例文件進行比較。

新項目向導向Page1.qml文件添加樣板代碼以創建菜單項和推送按鈕。通過刪除過時的代碼來修改樣板代碼。已從UI表單中刪除了推送按鈕,因此還需要從Page1.qml中刪除相應的代碼(否則無法構建應用程序)。

現在UI已經準備好,可以切換到在文本編輯器中編輯main.qml文件,以添加動畫到應用程序,如下一節所述。
在這里插入圖片描述

添加應用邏輯

編輯 main.qml 文件,添加兩個額外狀態 State1 和 State2 的指針。你無法使用表單編輯器為 Window QML 類型添加狀態。請使用文本編輯器將狀態添加到 StateGroup QML 類型中,并通過使用狀態組的 id 引用它們。\

  1. 將窗口大小和背景顏色指定為 ApplicationWindow 類型的屬性:

    ApplicationWindow {visible: truewidth: 640height: 480title: qsTr("Tabs")
    
  2. 為 Page1 類型指定一個 id,以便能夠使用在 Page1Form.ui.qml 中導出的屬性:

    SwipeView {id: swipeViewanchors.fill: parentcurrentIndex: tabBar.currentIndexPage1Form {id: page
    
  3. 在 mouseArea 中添加一個指向點擊表達式的指針:

    	mouseArea {onClicked: stateGroup.state = ' '}
    
  4. 該表達式將狀態設置為基本狀態,并將圖像返回到初始位置。
    在 mouseArea1 中添加一個指向點擊表達式的指針,將狀態設置為 State1:

    	mouseArea1 {onClicked: stateGroup.state = 'State1'}
    
  5. 在 mouseArea2 中添加一個指向點擊表達式的指針,將狀態設置為 State2:

        mouseArea2 {onClicked: stateGroup.state = 'State2'}
    }
    
  6. 將 Qt 標志的位置綁定到矩形,以確保在不同大小的屏幕上縮放視圖時,標志顯示在矩形內部。設置 x 和 y 屬性的表達式,如下面的代碼片段所示:

      StateGroup {id: stateGroupstates: [State {name: "State1"PropertyChanges {target: page.iconx: page.middleRightRect.xy: page.middleRightRect.y}},State {name: "State2"PropertyChanges {target: page.iconx: page.bottomLeftRect.xy: page.bottomLeftRect.y}}]
    
  7. 按 Ctrl+R 運行應用程序。
    點擊矩形以將 Qt 標志從一個矩形移動到另一個矩形。

為視圖添加動畫

在狀態組內添加過渡以定義當Qt標志在狀態之間移動時屬性如何變化。這些過渡將動畫應用于Qt標志。例如,當它移動到middleRightRect時,Qt標志會反彈回來,并平穩地進入bottomLeftRect。

  1. 在文本編輯器中,添加以下代碼以指定當移動到State1時,Qt標志的x和y坐標在線性時間內變化1秒鐘:

      transitions: [Transition {from: "*"; to: "State1"NumberAnimation {easing.type: Easing.OutBounceproperties: "x,y";duration: 1000}},
    
  2. 可以使用Qt Quick工具欄中的動畫功能將緩動曲線類型從線性更改為OutBounce:
    a. 在文本編輯器中單擊NumberAnimation以顯示在這里插入圖片描述
    圖標,然后單擊該圖標以打開工具欄:
    在這里插入圖片描述
    b. 在Easing字段中,選擇Bounce。
    c. 在Subtype字段中,選擇Out。

  3. 添加以下代碼以指定當移動到State2時,Qt標志的x和y坐標在2秒鐘內變化,并且使用InOutQuad緩動函數:

      ...Transition {from: "*"; to: "State2"NumberAnimation {properties: "x,y";easing.type: Easing.InOutQuad;duration: 2000}},
    
  4. 添加以下代碼以指定對于任何其他狀態變化,Qt標志的x和y坐標在線性時間內變化200毫秒:

      ...Transition {NumberAnimation {properties: "x,y";duration: 200}}]
    

按Ctrl+R運行應用程序。
單擊矩形以查看動畫過渡效果。

素材文件

Files:

  • transitions/Page1Form.ui.qml
  • transitions/Page2Form.ui.qml
  • transitions/main.qml
  • transitions/qml.qrc
  • transitions/transitions.pro

Images:

  • transitions/qt-logo.png

參考文章

QT快速入門:創建您的第一個QML應用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40106.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40106.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40106.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

部署mysql到win10電腦上

中間出現了很多問題, 記錄一下 我這邊是去官網下載的 ,鏈接:https://dev.mysql.com/downloads/mysql/ 我這邊選了不是最新版本的MySQL,因為第一次安裝8.1.0版本的,死活運行不起來,直接卸載安重裝了&#x…

常用的分布式計算引擎

記錄一下,作為備忘。 常用的分布式計算引擎 多表關聯的問題,由于NoSQL數據庫主要用于海量存儲和單表查詢,一般都不支持join,需借助更上層的計算框架來實現多表關聯,比如: 計算框架支持數據源執行效率Hive本地文件、…

神經網絡基礎-神經網絡補充概念-35-為什么正則化可以減少過擬合

概念 正則化可以減少過擬合的原因在于它通過限制模型的復雜性來約束參數的取值范圍,從而提高了模型的泛化能力。過擬合是指模型在訓練集上表現很好,但在未見過的數據上表現不佳,這通常是因為模型過于復雜,過多地擬合了訓練數據中…

自己動手寫數據庫系統:實現一個小型SQL解釋器(中)

我們接上節內容繼續完成SQL解釋器的代碼解析工作。下面我們實現對update語句的解析,其語法如下: UpdateCmd -> INSERT | DELETE | MODIFY | CREATE Create -> CreateTable | CreateView | CreateIndex Insert -> INSERT INTO ID LEFT_PARAS Fie…

后端項目打包上傳服務器記錄

后端項目打包上傳服務器記錄 文章目錄 后端項目打包上傳服務器記錄1、項目打包2、jar包上傳服務器 本文記錄打包一個后端項目,上傳公司服務器的過程。 1、項目打包 通過IDEA的插件進行打包: 打成一個jar包,jar包的位置在控制臺可以看到。 2、…

ssm蜀都天香酒樓網站設計與實現

ssm蜀都天香酒樓的網站設計與實現028 開發工具:idea 數據庫mysql5.7 數據庫鏈接工具:navcat,小海豚等 技術:ssm 摘要 近年來,信息化管理行業的不斷興起,使得人們的日常生活越來越離不開計算機和互聯網技術。首…

機器學習基礎(六)

貝葉斯分析 介紹 “貝葉斯”是指托馬斯貝葉斯(1702–1761),他證明了一個特例,也就是現在的貝葉斯定理的特例。 貝葉斯定理(英語:Bayes theorem)是概率論中的一個定理,描述在已知一些條件下,某事件的發生概率。比如,如果已知某種健康問題與壽命有關,使用貝葉斯定理則…

selenium語法進階+常用API

目錄 瀏覽器操作 瀏覽器回退,前進 與刷新 瀏覽器窗口設置大小 瀏覽器設置寬高 瀏覽器窗口最大化 瀏覽器控制滾動條 信息打印 打印頁面的標題和當前頁面的URL 定位一組元素 鼠標和鍵盤事件 鍵盤 鼠標 下拉框操作 通過索引定位(se…

【BASH】回顧與知識點梳理(三十二)

【BASH】回顧與知識點梳理 三十二 三十二. SELinux 初探32.1 什么是 SELinux當初設計的目標:避免資源的誤用傳統的文件權限與賬號關系:自主式訪問控制, DAC以政策規則訂定特定進程讀取特定文件:委任式訪問控制, MAC 32.2 SELinux 的運作模式安…

安科瑞變電所運維平臺在電力系統中應用分析

摘要:現代居民生活、工作對電力資源的需求量相對較多,給我國的電力產業帶來了良好的發展機遇與挑戰。探索電力系統基本構成, 將變電運維安全管理以及相應的設備維護工作系統性開展,能夠根據項目實踐工作要求,將滿足要求…

C語言暑假刷題沖刺篇——day2

目錄 一、選擇題 二、編程題 🎈個人主頁:庫庫的里昂 🎐CSDN新晉作者 🎉歡迎 👍點贊?評論?收藏?收錄專欄:C語言每日一練 ?其他專欄:代碼小游戲C語言初階🤝希望作者的文章能對你…

最小生成樹,prim算法

Prim算法和Kruskal算法都是用于解決最小生成樹問題的經典算法,它們在不同情況下有不同的適用性和特點。 Prim算法: Prim算法是一種貪心算法,用于構建一個無向圖的最小生成樹。算法從一個初始節點開始,逐步添加與當前樹連接且具有…

【自動電壓調節器】無功功率控制的終端電壓控制研究(Simulink)

💥💥💞💞歡迎來到本博客????💥💥 🏆博主優勢:🌞🌞🌞博客內容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ??座右銘&a…

小白的Node.js學習筆記大全---不定期更新

let、const、var的區別 (1)塊級作用域: 塊作用域由 { }包括,let和const具有塊級作用域,var不存在塊級作用域。塊級作用域解決了ES5中的兩個問題: 內層變量可能覆蓋外層變量 用來計數的循環變量泄露為全局…

【加強管理】《別輸在不懂管理上》學習記錄,黃金41條

成功有時是很難效法的,但失敗是可以避免的,從失敗中吸取經驗和教訓才是管理者的必修課。釋義: 圖形含義🌲一級重要🍀二級重要🌿三級主要🍁存在問題🌼解決辦法 1 不能從頭管到腳 不…

【討論】視頻監控集中存儲方案如何做?

視頻監控集中存儲是指將多個視頻監控攝像頭所捕捉到的視頻信號集中存儲于一個中央設備,這個中央設備可以是服務器、網絡存儲設備或其他專用設備。通過集中存儲,可以避免因為存儲設備分散而導致的管理不便和難以有效地管理和檢索視頻數據,同時…

RTT(RT-Thread)ADC設備(RTT保姆級介紹)

目錄 ADC設備 前言 ADC相關參數說明 訪問ADC設備 配置ADC設備 ADC實例 硬件設計 軟件設計 ADC設備 前言 ADC(Analog-to-Digital Converter) 指模數轉換器。是指將連續變化的模擬信號轉換為離散的數字信號的器件。 對于ADC的詳細介紹和在STM32中的裸機應用可參考以下…

pandas數據分析38——數據框表格拓展以及縮回對齊

案例背景 需求是這個樣的: 把這個表格進行拓展。 代碼實現: df pd.DataFrame(np.array([[1, 2, 3,4], [a,b, c,d], [小明,小紅, 小馬,小天]])) df 方法一:自定義函數: def expand_dataframe(df):m, n df.shapenew_df pd.Dat…

linux系統中設置服務開機自啟動

1:背景描述 最近根據工作需要,需要服務實現開機自啟動的效果,因為平時只使用過nohup的后臺掛起操作,很少接觸開機,鏡像裝機服務自啟動的功能,因此,這里簡單記錄一下。 注意,開機自…

解鎖數據潛力:信息抽取、數據增強與UIE的完美融合

解鎖數據潛力:信息抽取、數據增強與UIE的完美融合 1.信息抽取(Information Extraction) 1.1 IE簡介 信息抽取是 NLP 任務中非常常見的一種任務,其目的在于從一段自然文本中提取出我們想要的關鍵信息結構。 舉例來講&#xff0…