91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何以模塊的方式導(dǎo)入QML目錄

工程師鄧生 ? 來(lái)源:嵌入式小生 ? 作者:嵌入式小生 ? 2022-08-31 09:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

開(kāi)篇

在《如何導(dǎo)入QML文檔目錄》一文中,描述了如何導(dǎo)入QML目錄。對(duì)于應(yīng)用程序內(nèi)組件集來(lái)說(shuō),在實(shí)際開(kāi)發(fā)中,導(dǎo)入本地QML目錄非常方便。但是如果模塊目錄移動(dòng)到了另一個(gè)位置,那么所有與導(dǎo)入此模塊的代碼(與導(dǎo)入相關(guān)的語(yǔ)句)都必須更新,這將是一個(gè)非常麻煩且糟糕的事情。本文將繼續(xù)該文中留下的話題:如何以模塊的方式導(dǎo)入。

使用QML模塊的優(yōu)點(diǎn)如下:

(1)在一個(gè)項(xiàng)目中可以共享公共的QML類型。

(2)可用于發(fā)布基于QML的庫(kù)。

(3)可以模塊化開(kāi)發(fā),使應(yīng)用程序只加載各自需要的庫(kù)。

(4)可以對(duì)QML類型和資源進(jìn)行版本控制,這樣可以很容易的更新模塊。

從0到1

創(chuàng)建一個(gè)工程

首先使用QtCreator創(chuàng)建一個(gè)工程,這里命名為:CusModule,工程目錄結(jié)構(gòu)如下圖所示:

0646f99e-28c7-11ed-ba43-dac502259ad0.png

上圖中,有一個(gè)描述qml應(yīng)用的main.qml文件,還有一個(gè)main.cpp文件用于描述一個(gè)Qt應(yīng)用,并創(chuàng)建QGuiApplication應(yīng)用和QQmlApplicationEngineqml解析引擎。

創(chuàng)建模塊

假如我們需要?jiǎng)?chuàng)建一個(gè)模塊,將該模塊命名為CusComponent,該模塊里包含一組qml文件:MyRect10.qml、MyRect20.qml、MyText10.qml、MyRect30.qml文件。

在文件中分別寫上以下簡(jiǎn)單的代碼:

//MyRect10.qml
importQtQuick2.0

Rectangle{
height:50
width:50
color:"blue"
}
//MyRect20.qml
importQtQuick2.0

Rectangle{
height:50
width:50
color:"red"
}
//MyRect30.qml
importQtQuick2.0

Rectangle{
height:50
width:50
color:"black"
}

//MyText10.qml
importQtQuick2.0
importQtQuick.Controls1.4

Label{
text:qsTr("iriczhao|自定義QML模塊");
}

接著在CusComponent目錄下添加一個(gè)qmldir文件,注意該文件名只能是qmldir,在該文件中放入以下代碼:

moduleCusComponent
CusMyRect1.0MyRect10.qml
CusMyText1.0MyText10.qml
CusMyRect2.0MyRect20.qml
CusMyRect3.0MyRect30.qml

qmldir文件是一個(gè)純文本文件,該文件內(nèi)容由命令組成,用于描述組成該模塊的文件和'資源。語(yǔ)法如下(此處只列出兩條命令):

module

該命令用于聲明模塊的模塊標(biāo)識(shí)符,是模塊的標(biāo)識(shí)符,它必須與模塊的安裝路徑匹配。模塊標(biāo)識(shí)符指令必須位于qml文件的第一行。

[singleton]

該命令用于聲明模塊可用的QML對(duì)象類型。

『singleton』用于聲明單列類型,該參數(shù)可選。

『TypeName』可用的類型名稱。

『InitialVersion』可用類型對(duì)應(yīng)的模塊版本。

『File』是定義類型的QML文件的(相對(duì))文件名。

qmldir文件中可以存在零個(gè)或多個(gè)對(duì)象類型聲明,但是每個(gè)對(duì)象類型在模塊的特定版本中必須有一個(gè)唯一的類型名稱。

完成后目錄結(jié)構(gòu)如下:

066bbe3c-28c7-11ed-ba43-dac502259ad0.png

在QtCreator中的目錄結(jié)構(gòu)如下圖所示:

0686a1ac-28c7-11ed-ba43-dac502259ad0.png

注,qmldir文件也要添加到資源管理中。

導(dǎo)入模塊

在main.qml文件中使用import語(yǔ)言導(dǎo)入模塊,語(yǔ)法如下:

import模塊名版本號(hào)

本文則使用import CusComponent 1.0導(dǎo)入,然后我們?cè)O(shè)計(jì)一個(gè)簡(jiǎn)單的界面顯示,完整代碼如下:

importQtQuick2.15
importQtQuick.Window2.15
importQtQuick.Controls2.15

importCusComponent1.0

Window{
width:640
height:480
visible:true
color:"#89c3f6"
title:qsTr("HelloWorld")

//MyRect10.qml
CusMyRect{}

//MyText10.qml
CusMyText{
x:200
y:10
}
}

這時(shí)候,在QtCreator代碼編輯器中,我們可以看見(jiàn)幾個(gè)錯(cuò)誤的地方:

06a0e260-28c7-11ed-ba43-dac502259ad0.png

接著,我們運(yùn)行一下程序,將會(huì)報(bào)錯(cuò):module "CusComponent" is not installed

06c5ab0e-28c7-11ed-ba43-dac502259ad0.png

出現(xiàn)這三個(gè)問(wèn)題的原因提示已經(jīng)很明顯啦:那就是模塊沒(méi)有安裝,接下來(lái)讓我們來(lái)安裝模塊啦。

安裝模塊

當(dāng)我們的模塊設(shè)計(jì)好后,需要安裝。安裝的本質(zhì)就是將QML的解析路徑告訴QtCreator和QML解析引擎。

(1)將QML的解析路徑告訴QML解析引擎 這一點(diǎn),使用qputenv(模塊路徑)或addImportPath(模塊路徑)函數(shù)實(shí)現(xiàn),在本文中,如果使用qputenv,則需要在main()函數(shù)的開(kāi)始處添加如下代碼:

qputenv("QML2_IMPORT_PATH",":/");

如果使用addImportPath(),則需要在QML解析引擎下添加如下代碼:

06e238e6-28c7-11ed-ba43-dac502259ad0.png

注,上述路徑是相對(duì)于資源系統(tǒng)的,

我們可以使用QQmlApplicationEngine的importPathList()函數(shù)查看當(dāng)前QML解析引擎導(dǎo)入的路徑都包含了哪些,是否包含了我們需要的模塊路徑。

好啦,至此,我們已經(jīng)將QML的解析路徑告訴了QML解析引擎。這時(shí)候,應(yīng)用軟件是可以啟動(dòng)運(yùn)行了,如下圖所示:

0707effa-28c7-11ed-ba43-dac502259ad0.png

但是,QtCreator代碼編輯器中的問(wèn)題依然存在:QML module not found(CusComponent)和對(duì)象類型不高亮顯示。這時(shí)候,還需要我們將QML的解析路徑告訴QtCreator:在.pro工程描述文件中,添加如下代碼:

072d68b6-28c7-11ed-ba43-dac502259ad0.png

即可解決。

注意:路徑與在QML的解析路徑告訴QML解析引擎時(shí)設(shè)置的路徑相同

備注

(1)在設(shè)置導(dǎo)入模塊路徑時(shí)需要注意路徑的寫法,例如,如果本例寫成/CusComponet是無(wú)法正確安裝模塊的。這一點(diǎn),我們可以理解成:QML模塊是需要一個(gè)模塊名的,在寫模塊導(dǎo)入路徑時(shí),寫到模塊名上一級(jí)目錄就可以了,不能寫到模塊名,本文模塊名則是:CusComponet。

(2)編寫模塊描述文件qmldir時(shí),是可以指定qml組件類型的版本號(hào)的,這一點(diǎn)則是創(chuàng)建QML模塊的一個(gè)重要優(yōu)點(diǎn),例如,如果將本文的模塊導(dǎo)入語(yǔ)句改成:import CusComponent 2.0,就會(huì)報(bào):CusMyText is not a type信息了且應(yīng)用無(wú)法啟動(dòng)運(yùn)行。(模塊的版本控制將在后續(xù)文章中寫到啦)

(3)在QtCreator中,如果導(dǎo)入語(yǔ)句語(yǔ)法和用法都正常,且能正常啟動(dòng)運(yùn)行qml程序,但是在代碼編輯器中依然會(huì)報(bào):QT Unknown component(M300)錯(cuò)誤。

這是因?yàn)镼tCreator的代碼模型沒(méi)有重置更新。可按照下列步驟解決:

依次點(diǎn)擊:工具 --> QML/JS --> 重置代碼模型,重置更新一下代碼模型即可解決。

0757412c-28c7-11ed-ba43-dac502259ad0.png



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    828

    瀏覽量

    32979

原文標(biāo)題:從0到1如何創(chuàng)建一個(gè)QML模塊

文章出處:【微信號(hào):嵌入式小生,微信公眾號(hào):嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    LM555QML定時(shí)器:功能特性、應(yīng)用及設(shè)計(jì)要點(diǎn)

    LM555QML定時(shí)器:功能特性、應(yīng)用及設(shè)計(jì)要點(diǎn) 在電子設(shè)計(jì)領(lǐng)域,定時(shí)器是一種常用的器件,可用于生成精確的時(shí)間延遲或振蕩。TI公司的LM555QML定時(shí)器就是這樣一款高度穩(wěn)定的器件,下面我們來(lái)詳細(xì)
    的頭像 發(fā)表于 02-10 15:40 ?195次閱讀

    德州儀器LM117QML/LM117QML - SP可調(diào)穩(wěn)壓器深度解析

    德州儀器LM117QML/LM117QML - SP可調(diào)穩(wěn)壓器深度解析 在電子工程領(lǐng)域,穩(wěn)壓器是電源設(shè)計(jì)中不可或缺的組件,它能夠?yàn)殡娐诽峁┓€(wěn)定的電壓輸出,確保系統(tǒng)的正常運(yùn)行。德州儀器(TI
    的頭像 發(fā)表于 02-06 11:30 ?269次閱讀

    深入剖析 LM136-5.0QML 與 LM136A-5.0QML:高精度 5.0V 參考二極管的理想之選

    深入剖析 LM136-5.0QML 與 LM136A-5.0QML:高精度 5.0V 參考二極管的理想之選 在電子工程師的日常設(shè)計(jì)中,高精度、穩(wěn)定的電壓參考源是許多電路不可或缺的關(guān)鍵組件。今天,我們
    的頭像 發(fā)表于 02-06 11:00 ?295次閱讀

    高速精密運(yùn)算放大器LM118QML:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

    高速精密運(yùn)算放大器LM118QML:特性、應(yīng)用與設(shè)計(jì)要點(diǎn) 在電子工程師的日常設(shè)計(jì)工作中,運(yùn)算放大器是不可或缺的基礎(chǔ)元件。而對(duì)于那些對(duì)帶寬和轉(zhuǎn)換速率有較高要求的應(yīng)用場(chǎng)景,選擇一款合適的高速運(yùn)算放大器
    的頭像 發(fā)表于 02-06 09:55 ?238次閱讀

    深入解析LM747QML雙運(yùn)算放大器:特性、參數(shù)與應(yīng)用考量

    深入解析LM747QML雙運(yùn)算放大器:特性、參數(shù)與應(yīng)用考量 在電子工程師的日常設(shè)計(jì)工作中,運(yùn)算放大器是極為常見(jiàn)且關(guān)鍵的元件。今天,我們就來(lái)深入探討德州儀器(TI)的LM747QML雙運(yùn)算放大器,詳細(xì)
    的頭像 發(fā)表于 02-06 09:55 ?214次閱讀

    深入解析LM2941QML與LM2941QML - SP:1A低壓差可調(diào)穩(wěn)壓器的卓越之選

    深入解析LM2941QML與LM2941QML - SP:1A低壓差可調(diào)穩(wěn)壓器的卓越之選 在電子工程師的日常設(shè)計(jì)工作中,穩(wěn)壓器是不可或缺的重要組件。今天,我們將深入探討德州儀器(TI
    的頭像 發(fā)表于 02-05 17:15 ?616次閱讀

    LM2941QML與LM2941QML - SP:1A低壓差可調(diào)穩(wěn)壓器詳解

    LM2941QML與LM2941QML - SP:1A低壓差可調(diào)穩(wěn)壓器詳解 在電子設(shè)計(jì)領(lǐng)域,穩(wěn)壓器是不可或缺的組件,它能為電路提供穩(wěn)定的電壓,保證電子設(shè)備的正常運(yùn)行。今天我們就來(lái)詳細(xì)探討德州儀器
    的頭像 發(fā)表于 02-05 17:15 ?646次閱讀

    探索LP2953QML與LP2953QML - SP:可調(diào)微功耗低壓差穩(wěn)壓器的卓越之選

    探索LP2953QML與LP2953QML - SP:可調(diào)微功耗低壓差穩(wěn)壓器的卓越之選 在電子設(shè)備的設(shè)計(jì)領(lǐng)域,電源管理始終是一個(gè)關(guān)鍵環(huán)節(jié),穩(wěn)壓器的性能直接影響著整個(gè)系統(tǒng)的穩(wěn)定性和效率。今天,我們就來(lái)
    的頭像 發(fā)表于 02-05 16:25 ?367次閱讀

    深入剖析LM6172QML:從特性到應(yīng)用的全面解讀

    深入剖析LM6172QML:從特性到應(yīng)用的全面解讀 在電子工程師的日常工作中,選擇合適的放大器是設(shè)計(jì)成功的關(guān)鍵之一。今天,我們要深入了解一款高性能的放大器——LM6172QML,探討它的特性、應(yīng)用以
    的頭像 發(fā)表于 02-05 16:20 ?325次閱讀

    解析LM2940QML與LM2940QML - SP:1A低壓差穩(wěn)壓器的卓越之選

    解析LM2940QML與LM2940QML - SP:1A低壓差穩(wěn)壓器的卓越之選 在電子設(shè)備的設(shè)計(jì)中,電源管理是至關(guān)重要的一環(huán)。穩(wěn)壓器作為電源管理的核心組件,其性能直接影響著整個(gè)系統(tǒng)的穩(wěn)定性和可靠性
    的頭像 發(fā)表于 02-05 14:10 ?256次閱讀

    深入剖析LM2940QML與LM2940QML - SP 1A低壓差穩(wěn)壓器

    深入剖析LM2940QML與LM2940QML - SP 1A低壓差穩(wěn)壓器 在電子設(shè)計(jì)領(lǐng)域,穩(wěn)壓器是保障電路穩(wěn)定運(yùn)行的關(guān)鍵元件。今天,我們就來(lái)詳細(xì)探討德州儀器(TI)的LM2940QML
    的頭像 發(fā)表于 02-05 13:50 ?360次閱讀

    何以編程方式在觸摸屏 MIPI 顯示器上旋轉(zhuǎn)圖像?

    何以編程方式在觸摸屏 MIPI 顯示器上旋轉(zhuǎn)圖像? 我正在使用 Gnome 的出廠映像202411。我沒(méi)有鍵盤和鼠標(biāo),互聯(lián)網(wǎng)信息亭正在 FireFox 上加載。 我嘗試了 xrandr 實(shí)用程序
    發(fā)表于 02-04 06:45

    ?LM136A-2.5QML/LM136A-2.5QML-SP 技術(shù)文檔摘要

    LM136A-2.5QML集成電路是一款精密的2.5V并聯(lián)穩(wěn)壓二極管。該單片IC基準(zhǔn)電壓源作為低溫度系數(shù)的2.5V齊納管工作,動(dòng)態(tài)阻抗為0.2Ω。LM136A-2.5QML 上的第三個(gè)端子可以輕松
    的頭像 發(fā)表于 08-15 09:55 ?1065次閱讀
    ?LM136A-2.5<b class='flag-5'>QML</b>/LM136A-2.5<b class='flag-5'>QML</b>-SP 技術(shù)文檔摘要

    ?LM4050QML精密微功耗并聯(lián)電壓基準(zhǔn)芯片技術(shù)文檔總結(jié)

    LM4050QML精密基準(zhǔn)電壓源采用10引腳陶瓷CLGA封裝。 該LM4050QML的設(shè)計(jì)消除了對(duì)外部穩(wěn)定電容器的需求,同時(shí)確保 具有容性負(fù)載的穩(wěn)定性,從而使LM4050QML易于
    的頭像 發(fā)表于 08-13 09:36 ?1037次閱讀
    ?LM4050<b class='flag-5'>QML</b>精密微功耗并聯(lián)電壓基準(zhǔn)芯片技術(shù)文檔總結(jié)

    Simcenter FLOEFD EDA Bridge模塊:使用導(dǎo)入的詳細(xì)PCB設(shè)計(jì)和IC熱特性來(lái)簡(jiǎn)化熱分析

    的EDABridge模塊可將印刷電路板(PCB)詳細(xì)導(dǎo)入到您選擇的機(jī)械計(jì)算機(jī)輔助設(shè)計(jì)(MCAD)工具中,為熱分析做準(zhǔn)備。一直以來(lái),訪問(wèn)PCB數(shù)據(jù)的有效方法是使用中間數(shù)
    的頭像 發(fā)表于 06-10 17:36 ?1855次閱讀
    Simcenter FLOEFD EDA Bridge<b class='flag-5'>模塊</b>:使用<b class='flag-5'>導(dǎo)入</b>的詳細(xì)PCB設(shè)計(jì)和IC熱特性來(lái)簡(jiǎn)化熱分析