99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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目錄

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

掃碼添加小助手

加入工程師交流群

開篇

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

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

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

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

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

(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)容由命令組成,用于描述組成該模塊的文件和'資源。語法如下(此處只列出兩條命令):

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語言導(dǎo)入模塊,語法如下:

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代碼編輯器中,我們可以看見幾個(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è)問題的原因提示已經(jīng)很明顯啦:那就是模塊沒有安裝,接下來讓我們來安裝模塊啦。

安裝模塊

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

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

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代碼編輯器中的問題依然存在: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是無法正確安裝模塊的。這一點(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)入語句改成:import CusComponent 2.0,就會(huì)報(bào):CusMyText is not a type信息了且應(yīng)用無法啟動(dòng)運(yùn)行。(模塊的版本控制將在后續(xù)文章中寫到啦)

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

這是因?yàn)镼tCreator的代碼模型沒有重置更新??砂凑障铝胁襟E解決:

依次點(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ī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    822

    瀏覽量

    32046

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    干貨分享 | 手把手教學(xué):TSMasterAPI插件導(dǎo)入與ECUTEST聯(lián)合仿真指南

    。本文將詳細(xì)介紹TSMasterAPI插件如何導(dǎo)入、核心API接口函數(shù)講解。本文關(guān)鍵詞:TSMasterAPI,ECUTEST,API接口目錄Catalog1.TSM
    的頭像 發(fā)表于 06-27 20:02 ?676次閱讀
    干貨分享 | 手把手教學(xué):TSMasterAPI插件<b class='flag-5'>導(dǎo)入</b>與ECUTEST聯(lián)合仿真指南

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

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

    碳化硅何以英飛凌?—— SiC MOSFET性能評(píng)價(jià)的真相

    在碳化硅(SiC)技術(shù)的應(yīng)用中,許多工程師對(duì)SiC的性能評(píng)價(jià)存在誤解,尤其是關(guān)于“單位面積導(dǎo)通電阻(Rsp)”和“高溫漂移”的問題。作為“碳化硅何以英飛凌”的系列文章,本文將繼續(xù)為您揭開這些誤區(qū)
    的頭像 發(fā)表于 04-30 18:21 ?244次閱讀
    碳化硅<b class='flag-5'>何以</b>英飛凌?—— SiC MOSFET性能評(píng)價(jià)的真相

    恩智浦eIQ Time Series Studio 工具使用攻略(四)-數(shù)據(jù)導(dǎo)入

    本期來到“Dataset"模塊。"Dataset"模塊用于"Projects"設(shè)置完成后導(dǎo)入用戶數(shù)據(jù),該模塊包括數(shù)據(jù)有效性檢查和數(shù)據(jù)可視化。 下面
    的頭像 發(fā)表于 03-06 09:01 ?1228次閱讀
    恩智浦eIQ Time Series Studio 工具使用攻略(四)-數(shù)據(jù)<b class='flag-5'>導(dǎo)入</b>

    ADC08D1520QML可以采集到的最高頻率是多少?

    如題,ADC08D1520QML的采樣率為最高3GSPS。那如果我要采集的信號(hào)的頻率是1GHZ的,采集效果會(huì)如何呢?
    發(fā)表于 02-06 06:51

    LITESTAR 4D應(yīng)用:導(dǎo)入并查看燈具信息

    在LITESTAR 4D中,Photoview模塊提供了光度文件的管理功能,方便用戶對(duì)光度文件中的極坐標(biāo)圖、等照度圖、光譜數(shù)據(jù)、技術(shù)參數(shù)表等數(shù)據(jù)的查看和處理。 燈具文件導(dǎo)入 用戶可以在此模塊頁面
    發(fā)表于 12-30 09:58

    如何導(dǎo)入Altium Designer的原理圖和PCB?

    “ ?KiCad可以支持直接導(dǎo)入Altium Designer的原理圖及PCB文件。與其它導(dǎo)入器不同,KiCad導(dǎo)入器可以直接導(dǎo)入源生的二進(jìn)制文件(*.schdoc及*.pcbdoc)
    的頭像 發(fā)表于 11-12 12:21 ?5783次閱讀
    如何<b class='flag-5'>導(dǎo)入</b>Altium Designer的原理圖和PCB?

    華為創(chuàng)新技術(shù)入選工信部節(jié)能技術(shù)推薦目錄

    《節(jié)能技術(shù)推薦目錄》)。華為電力模塊模塊化不間斷電源、智能鋰電等7項(xiàng)數(shù)據(jù)中心創(chuàng)新技術(shù),憑借優(yōu)異的節(jié)能降碳效果成功入選《節(jié)能技術(shù)推薦目錄》。
    的頭像 發(fā)表于 11-06 17:34 ?1013次閱讀
    華為創(chuàng)新技術(shù)入選工信部節(jié)能技術(shù)推薦<b class='flag-5'>目錄</b>

    AD畫完原理圖后如何導(dǎo)入PCB

    在Altium Designer(簡(jiǎn)稱AD)中,將畫完的原理圖導(dǎo)入到PCB(Printed Circuit Board,印制電路板)是一個(gè)關(guān)鍵的設(shè)計(jì)步驟。以下是導(dǎo)入過程: 一、準(zhǔn)備階段 確保原理圖
    的頭像 發(fā)表于 09-02 16:32 ?1.5w次閱讀

    何以及何時(shí)在PROFINET系統(tǒng)中使用以太網(wǎng)PHY

    電子發(fā)燒友網(wǎng)站提供《如何以及何時(shí)在PROFINET系統(tǒng)中使用以太網(wǎng)PHY.pdf》資料免費(fèi)下載
    發(fā)表于 08-31 10:15 ?0次下載
    如<b class='flag-5'>何以</b>及何時(shí)在PROFINET系統(tǒng)中使用以太網(wǎng)PHY

    開關(guān)量模塊接線方式有哪些

    開關(guān)量模塊接線方式是自動(dòng)化控制系統(tǒng)中的重要組成部分,它負(fù)責(zé)接收和處理開關(guān)信號(hào),實(shí)現(xiàn)對(duì)設(shè)備的控制。 一、開關(guān)量模塊概述 1.1 開關(guān)量模塊定義 開關(guān)量
    的頭像 發(fā)表于 08-30 14:17 ?2142次閱讀

    何以及為何要在EtherCAT?應(yīng)用中使用DP83826

    電子發(fā)燒友網(wǎng)站提供《如何以及為何要在EtherCAT?應(yīng)用中使用DP83826.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 10:19 ?0次下載
    如<b class='flag-5'>何以</b>及為何要在EtherCAT?應(yīng)用中使用DP83826

    LM555QML定時(shí)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《LM555QML定時(shí)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-20 09:29 ?0次下載
    LM555<b class='flag-5'>QML</b>定時(shí)器數(shù)據(jù)表

    嵌入式QT常見開發(fā)方式有哪些?

    JavaScript或C++后端處理復(fù)雜的業(yè)務(wù)邏輯和硬件接口操作。 4. 混合模式開發(fā): 在一些項(xiàng)目中,可能采用Qt Widgets與Qt Quick/QML相結(jié)合的方式,根據(jù)實(shí)際需求選擇不同技術(shù)棧
    發(fā)表于 08-12 10:05

    ADC08D1520QML-SP高性能CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC08D1520QML-SP高性能CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-22 09:50 ?0次下載
    ADC08D1520<b class='flag-5'>QML</b>-SP高性能CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表