【qml-7】qml與c++交互(自動補全提示)

背景:

【qml-5】qml與c++交互(類型單例)

之前記錄過qml與c++交互的方式,目前為止我使用的是“類型單例”方式。這些名字是我自己起的,只為說明問題,嚴謹的還是以手冊為準。

“類型單例”方式時提到過自動補全提示問題,就如前置聲明和頭文件一樣,需要注冊類型,所以以前我是這樣做的:

    qmlRegisterType<CppGrid>("CppGrid", 1, 0, "CppGrid");qmlRegisterSingletonInstance("CppGrid", 1, 0, "CppGrid", CppGrid::instance());

最早的時候我每寫一個類,都會給它注冊一個單獨的uri,用于qml的import。后來發現有時候即使注冊了類型也不能補全提示。

我的初衷是,要心情愉悅地寫qml,就一定要解決自動補全提示的問題,每次在類型名后面打點必須給出提示。網上搜了一堆,一個比一個麻煩,我就是要簡潔,不修改cmake,不用qmldir和目錄,除了簡單加極少代碼其它一概不用,只改涉及一處,好維護好理解。

所以開始研究。

URI:

這個用于qml import的uri,后來我想干脆都用一個算了,因為目前的項目規模有限,分太細沒必要,書寫繁瑣,所以后來都用“Cpp”取代了。

注冊函數:

以前像上面那樣使用注冊函數,初衷就是為了簡潔好管理。

但終歸發現注冊類型和單例同時存在會有問題,因為使用了同一個模塊(uri),又用同一個類型名,它就有可能不穩定。總之就是不建議一起用。

所以查詢了AI和手冊,最終確定了更簡潔的用法:

    qmlRegisterSingletonType<CppGrid>("CppSingleton", 1, 0, "CppGrid",[](QQmlEngine*, QJSEngine*) { return CppGrid::instance(); });

凡是需要單例注冊的,就這樣一行即可。導入時只需要import CppSingleton,再使用CppGrid打點時,一定會出現補全提示。

項目中我還做了一個分頁組件,需要qml和c++協作,所以它專屬的CppPage類型,我沒有使用單例,而是類型注冊,因為需要每個調用它的ui有獨立的信號槽,就必須每個ui實例化。所以目前只有這個是使用類型注冊的。

    qmlRegisterType<CppPage>("CppType", 1, 0, "CppPage");

uri就用“CppType”吧,以后有其它需要類型注冊的,也用這個名字,不分太細了,累。

總結:

本次記錄的目的,就是因為曾遇到了補全提示不正常的情況,一定要搞定它,寫qml才舒服。

本文完。

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

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

相關文章

網頁提示UI操作-適應提示,警告,信息——仙盟創夢IDE

代碼<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原生動態提示框</title><style>…

第八篇 永磁同步電機控制-MTPA、MTPV

永磁同步電機控制系列課程&#xff1a; 第一篇 永磁同步電機控制-認識電機 第二篇 永磁同步電機控制-電機的分類 第三篇 永磁同步電機控制-硬件基礎知識 第四篇 永磁同步電機控制-軟件基礎知識 第五篇 永磁同步電機控制-數學模型 第六篇 永磁同步電機控制-控制方法 第七…

JAVA:Spring Boot 集成 Temporal 實現訂單處理系統

?? 1、簡述 在現代分布式系統中,訂單處理涉及多步驟工作流(如庫存扣減、支付確認、物流派單等)。為了確保這些步驟的 可靠性、可觀測性 和 容錯性,我們可以使用 Temporal 實現工作流管理。 本文將介紹如何在 Spring Boot 中集成 Temporal,并通過一個訂單處理的實際案例…

服務器硬件電路設計之 SPI 問答(六):如何提升服務器硬件電路中的性能?如何強化穩定性?

在服務器 SPI 硬件設計中&#xff0c;通信性能&#xff08;如傳輸速率、數據吞吐量&#xff09;與穩定性&#xff08;抗干擾、誤碼率&#xff09;直接決定外設響應效率&#xff0c;需從硬件設計、參數配置、干擾抑制三方面系統優化。一、性能優化核心策略&#xff1a;根據 SPI …

Web 聊天室消息加解密方案詳解

目錄 ?編輯 一、Web 聊天室消息加解密需求與技術約束 1.1 核心安全需求 1.2 技術約束 二、主流消息加解密方案詳解 2.1 方案 1&#xff1a;對稱加密&#xff08;AES-256-GCM&#xff09; 2.1.1 方案概述 2.1.2 核心原理 2.1.3 實現步驟&#xff08;分場景&#xff09…

組合導航 | RTK、IMU與激光雷達組合導航算法:原理、實現與驗證

RTK、IMU與激光雷達組合導航算法:原理、實現與驗證 文章目錄 RTK、IMU與激光雷達組合導航算法:原理、實現與驗證 一、組合導航系統原理與數學模型 1.1 傳感器特性與互補性分析 1.2 系統狀態方程構建 1.3 多源觀測方程設計 (1)RTK觀測模型 (2)激光雷達觀測模型 (3)多源觀…

使用Cadence工具完成數模混合設計流程簡介

眾所周知&#xff0c;Cadence的Virtuoso是模擬設計領域的核心工具&#xff0c;市占率達到75%&#xff0c;隨著近些年來Cadence在數字版圖設計&#xff08;APR&#xff09;領域的崛起&#xff0c;invs&#xff0c;PVS等一眾工具也都成了很多公司的首選后端流程工具。依照強強聯合…

FunASR人工智能語音轉寫服務本地部署測試

前提條件&#xff1a;本機&#xff1a;windows11 &#xff0c;已安裝docker1.下載鏡像使用命令下載docker鏡像docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.13下載完成后&#xff0c;建立文件夾儲存之后需要下載的模型…

Python OpenCV圖像處理與深度學習

Python OpenCV圖像處理與深度學習 1. Python OpenCV入門&#xff1a;圖像處理基礎 2. Python OpenCV開發環境搭建與入門 3. Python OpenCV圖像處理基礎 4. Python OpenCV視頻處理入門 5. Python OpenCV圖像幾何變換入門 6. Python OpenCV圖像濾波入門 7. Python OpenCV邊緣檢測…

C# SIMD編程實踐:工業數據處理性能優化案例

性能奇跡的開始 想象一下這樣的場景&#xff1a;一臺精密的工業掃描設備每次檢測都會產生200萬個浮點數據&#xff0c;需要我們計算出最大值、最小值、平均值和方差來判斷工件是否合格。使用傳統的C#循環處理&#xff0c;每次計算需要幾秒鐘時間&#xff0c;嚴重影響生產線效率…

XHR 介紹及實踐

What is it? XML(XMLHttpRequest) 是瀏覽器提供的一種用于前端頁面和后端服務器進行異步通信的編程接口。它允許在不重新加載整個頁面的情況下&#xff0c;與服務器交換數據并更新部分頁面內容&#xff0c;是 AJAX 技術的核心。 What is it used for? 異步請求&#xff1a;在…

【量化回測】backtracker整體架構和使用示例

backtrader整體框架 backtrader 是一個量化回測的庫&#xff0c;支持多品種、多策略、多周期的回測和交易。更重要的是可以集成 torch 等神經網絡分析模塊。Cerebro類是 backtrader 的核心。Strategy類、Broker和Sizer類都是由Cerebro類實例化而來。 整體流程 backtrade 自帶的…

【python+requests】一鍵切換測試環境:Windows 下環境變量設置指南

一鍵切換測試環境&#xff1a;Windows 下環境變量設置指南教你如何通過一個命令讓測試腳本自動識別不同環境的配置文件你是否遇到過這種情況&#xff1a;同一套測試腳本&#xff0c;需要在測試環境、開發環境、預發布環境、生產環境等多種配置中切換&#xff1f;每次都要手動修…

備份壓縮存儲優化方案:提升效率與節省空間的完整指南

在數字化時代&#xff0c;數據備份已成為企業運營的關鍵環節。本文將深入探討備份壓縮存儲優化方案&#xff0c;從技術原理到實施策略&#xff0c;為您提供一套完整的存儲空間節省與性能提升解決方案。我們將分析不同壓縮算法的適用場景&#xff0c;揭示存儲架構優化的關鍵技巧…

【圖像算法 - 25】基于深度學習 YOLOv11 與 OpenCV 實現人員跌倒識別系統(人體姿態估計版本)

摘要&#xff1a; 本文將詳細介紹如何利用先進的深度學習目標檢測算法 YOLOv11 結合 OpenCV 計算機視覺庫&#xff0c;構建一個高效、實時的人員跌倒識別系統。跌倒檢測在智慧養老、安防監控、工業安全等領域至關重要。我們將從環境搭建、數據準備、模型訓練到跌倒行為判斷邏輯…

數據結構--棧(Stack) 隊列(Queue)

一、棧&#xff08;Stack&#xff09;1. 棧的定義棧&#xff08;Stack&#xff09;是一種 先進后出&#xff08;LIFO, Last In First Out&#xff09; 的數據結構。就像一摞書&#xff1a;最后放的書最先拿走。2. 棧的常用方法&#xff08;Stack 類&#xff09;Stack<E> …

FART 主動調用組件深度解析:破解 ART 下函數抽取殼的終極武器

版權歸作者所有&#xff0c;如有轉發&#xff0c;請注明文章出處&#xff1a;https://cyrus-studio.github.io/blog/ FART 的主動調用組件 在 Android 逆向與脫殼領域&#xff0c;早期的自動化脫殼方案&#xff08;如 DexHunter、FUPK3&#xff09;主要運行在 Dalvik 環境&…

基于有限元分析法的熱壓成型過程中結構變形和堆積matlab模擬與仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.部分程序 4.算法理論概述 5.完整程序 1.程序功能描述 在壓印過程中&#xff0c;一般情況下&#xff0c;我們遵循質量&#xff0c;動量和能量守恒的原則進行仿真。然后建立偏微分方程組&#xff0c;然后通過有限元的…

CF每日3題(1500-1600)

1809C 神必構造題 對子數組的和考慮使用前綴和&#xff0c;發現逆序對的規律&#xff0c;構造1797C 神奇交互題 需要找特殊的點確定位置2132D 神奇數位題 需要用二分logk優化復雜度&#xff0c;把數位轉換成能到的上限數aim 1809C 構造 前綴和 逆序對 思維 排序 1500 /* 神必構…

Linux學習——sqlite3

1.sqlite3的使用1.打開數據庫sqlite3 stu.db //database2.操作輸入 sqlite3&#xff0c;進入軟件后&#xff0c;輸入 sqlite3 軟件自帶的命令&#xff08;.help&#xff0c;.databases&#xff0c;quit&#xff0c;.exit&#xff09;3.增刪改查增CREATE TABLE database_name.…