qt 自帶虛擬鍵盤的編譯使用記錄

一、windows 下編譯

? ? ? ? 使用vs 命令窗口,分別執行:

? ? ? ? qmake CONFIG+="lang-en_GB lang-zh_CN"?

? ? ? ? nmake

? ? ? ? nmake install? ?

? ? ? ?如果事先沒有?指定需要使用的輸入法語言就進行過編譯,則需要先 執行 nmake distclean 清理后執行 qmake 才能生效。

二、關于源碼的理解

? ? ? ? 1、 虛擬鍵盤是以插件的形式啟動的,qt 程序運行后會自動遍歷加載 qt 安裝目錄下...\plugins\platforminputcontexts 目錄中的插件dll。如果安裝了虛擬鍵盤QtVirtualKeyboard 則會在?platforminputcontexts 目錄下存在?QtVirtualKeyboard 的插件dll

? ? ? ? 2、QtVirtualKeyboard 插件代碼如下:運行時如果設置了對應的環境遍歷,則插件正常加載

static const char pluginsUri[] = "QtQuick.VirtualKeyboard.Plugins";
static const char pluginName[] = "qtvirtualkeyboard";
static const char inputMethodEnvVarName[] = "QT_IM_MODULE";QStringList QVirtualKeyboardPlugin::keys() const
{return QStringList(QLatin1String(pluginName));
}QPlatformInputContext *QVirtualKeyboardPlugin::create(const QString &system, const QStringList &paramList)
{Q_UNUSED(paramList);/*.............*///這里就算比對 環境變量,如果是 QT_IM_MODULE 和 qtvirtualkeyboard 則相當于使用了這個插件if (!qEnvironmentVariableIsSet(inputMethodEnvVarName) || qgetenv(inputMethodEnvVarName) != pluginName)return Q_NULLPTR;if (system.compare(system, QLatin1String(pluginName), Qt::CaseInsensitive) != 0)return Q_NULLPTR;//創建輸入法上下文PlatformInputContext *platformInputContext = new PlatformInputContext();/*.............*/
}

? ? ? ? 3、加載后 應該會自動調用?PlatformInputContext::update 函數,內部創建?DesktopInputPanel 輸入面板并創建 視圖

????????

? ? ? ? 4、視圖 是?QQuickView 的子類,用于加載 qml 界面。上圖中createView 將會加載顯示InPutPanel.qml 進行顯示

????????

? ? ?三、調整大小與可拖動

? ? ? ? 1、? 網上的方法 :在?DesktopInputPanel 類的 show 函數中 修改 視圖的大小,可以達到效果。但是由于 視圖的大小決定了 qml 界面可顯示的范圍,若修改視圖大小,則qml 只能在改區域內顯示,不號。所以該處不修改。

? ? ? ? 2、只需要在InputPanel.qml 修改即可,該 文件中的?Keyboard 即是整個鍵盤,直接修改其寬度即可,高度設置不生效(應該是內部自動根據寬度調整的),位置修改為 錨定父對象底部。

? ? ??

? ? ? ? 3、實現可拖動,修改??MouseArea? 代碼

????????

    property real mouseXTMP: 0property real mouseYTMP: 0MouseArea {z: -1anchors.fill: parent //修改為 Keyboard,這樣整個窗口都可以點擊拖動enabled: activeonPressed: {mouseXTMP = mouseXmouseYTMP = mouseY}onPositionChanged: {inputPanel.x = mouseX + inputPanel.x - mouseXTMPinputPanel.y = mouseY + inputPanel.y - mouseYTMP}}

? ? ? ? 4、屏蔽Binding 的代碼,該代碼具體含義不明,大概是會改變到 視圖 可視的范圍大小,會造成 與 在DesktopInputPanel 類的 show 函數中 修改 視圖的大小一樣的問題。可以直接注釋調。

????????????????

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

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

相關文章

Java開發之數據庫應用:記一次醫療系統數據庫遷移引發的異常:從MySQL到PostgreSQL的“dual“表陷阱與突圍之路

記一次醫療系統數據庫遷移引發的異常:從MySQL到PostgreSQL的"dual"表陷阱與突圍之路 一、驚魂時刻:數據庫切換引發的系統雪崩 某醫療影像系統在進行國產化改造過程中,將原MySQL數據庫遷移至PostgreSQL。遷移完成后,系…

C++刷題(二):棧 + 隊列

📝前言說明: 本專欄主要記錄本人的基礎算法學習以及刷題記錄,使用語言為C。 每道題我會給出LeetCode上的題號(如果有題號),題目,以及最后通過的代碼。沒有題號的題目大多來自牛客網。對于題目的…

精通游戲測試筆記(持續更新)

第一章、游戲測試的兩條規則 不要恐慌 不要將這次發布當作最后一次發布 不要相信任何人 把每次發布當作最后一次發布 第二章:成為一名游戲測試工程師

Windows功能之FTP服務器搭建

一、創作背景 之前有用linux系統搭建過ftp服務器,最近想著用windows系統也順便搭建一個,看網上有第三方服務軟件一鍵部署,記得windows可以不借助第三方軟件就可以搭建,就想順便操作試試,結果老是連接不上,費…

星型組網模塊的兩種交互方式優缺點解析

星型組網模塊簡介 星型組網模塊工作在433MHz頻段;星型組網模塊集主機(協調器)、終端為一體,星型組網模塊具有長距離、高速率兩種傳輸模式,一個主機(協調器)支持多達200個節點與其通訊&#xff0…

二分+前綴和——森林的最大美麗值

森林的最大美麗值(二分差分數組) 題目分析 求最小值的最大值,聯想到二分。 第一階段二段性分析 對于所有樹的高度都可以大于等于mid,那么我們可以確定高度小于mid的值一定也可以,但是此時我需要找的是最大的高度,那么mid一定比…

Pytorch實現之最小二乘梯度歸一化設計

簡介 簡介:LSGAN提出了一種利用最小二乘法來計算兩個數據分布之間的距離,該論文在此基礎上采用梯度歸一化來進一步穩定訓練。 論文題目:LSN-GAN: A Novel Least Square Gradient Normalization for Generative Adversarial Networks(LSN-GAN:一種新的生成對抗網絡的最小…

JavaScript基礎-全局作用域

在JavaScript編程中,理解變量的作用域是編寫高效、可維護代碼的關鍵之一。全局作用域是指變量在整個程序范圍內都可訪問的狀態,這意味著它們可以在任何函數或代碼塊中被讀取和修改。然而,過度使用全局變量也可能導致一些問題,如命…

【2025.3.13】記一次雙系統筆記本加裝固態硬盤記錄 linux擴容 linux更換/home和/opt所在硬盤 windows無法調整亮度

文章目錄 🌕事情經過🌕更換/home和/opt的掛載硬盤🌙目的🌙初始化1t固態硬盤🌙打開Linux查看硬盤信息🌙給新1t固態硬盤分區🌙格式化分區🌙把新1t固態硬盤先掛載到/mnt/ssd_1t 用于后續…

山東省新一代信息技術創新應用大賽-計算機網絡管理賽項(樣題)

目錄 競賽試題 網絡拓撲 配置需求 虛擬局域網 IPv4地址部署 OSPF及路由部署 配置合適的靜態路由組網 MSTP及VRRP鏈路聚合部署 IPSEC部署 路由選路部署 設備與網絡管理部署 1.R1 2.R2 3.S1 4.S2 5.S3 競賽試題 本競賽使用HCL(華三云實驗室)來進行網絡設備選擇…

【測試語言基礎篇】Python基礎之List列表

一、Python 列表(List) 序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。 Python有6個序列的內置類型,但最常見的是列表和元組。序列都可…

大數據面試之路 (二) hive小文件合并優化方法

大量小文件容易在文件存儲端造成瓶頸,影響處理效率。對此,您可以通過合并Map和Reduce的結果文件來處理。 一、合并小文件的常見場景 寫入時產生小文件:Reduce任務過多或數據量過小,導致每個任務輸出一個小文件。 動態分區插入&…

MySQL 批量插入 vs 逐條插

MySQL 插入數據:批量插入 vs 逐條插入,哪個更快? 在 MySQL 中,插入數據有兩種常見方式: 批量插入:一條 SQL 插入多條數據。逐條插入:每次插入一條數據。 這兩種方式有什么區別?哪…

Docker基礎命令說明

Docker基礎操作命令眾多,這些命令可以按如下方式進行分類: 鏡像操作容器操作網絡操作數據卷操作LOG查詢 等方面進行分類。 一、鏡像操作命令 docker images:用于列出本地系統中所有的 Docker 鏡像。鏡像就像是一個模板,它包含…

AI重構私域增長:從流量收割到終身價值運營的三階躍遷

私域運營的AI進化論:內容即服務的三個階段 隨著企業微信生態的成熟,私域運營正經歷從"流量收割"到"關系養成"的本質轉變。在AIGC技術的推動下,2024年私域場景正式進入**"內容即服務"**的價值共創期&#xff1…

Linux date 命令使用指南

date 命令用于 顯示或設置系統日期和時間&#xff0c;支持靈活的時間格式化和計算。以下是常用場景與詳細示例&#xff1a; 一、基本用法 1. 顯示當前日期和時間 <BASH> date # 輸出&#xff1a;Thu Jun 13 14:25:36 CST 20242. 設置系統時間&#xff08;需root權限&am…

Maven的依賴管理

maven相關依賴的官網&#xff1a;https://mvnrepository.com/ pom.xml是項目依賴的配置文件 maven首先會去本地倉庫下載相關依賴&#xff0c;如果沒有&#xff0c;則會去私服下載&#xff0c;再沒有&#xff0c;就去中央倉庫或鏡像下載。 自定義properties&#xff0c;可使用…

Mybaties批量操作

1、批量插入 <!--批量操作-插入--><!-- 相當于INSERT INTO t_goods (c1,c2,c3) VALUES (a1,a2,a3),(b1,b2,b3),(d1,d2,d3),...--><insert id"batchInsert" parameterType"java.util.List">INSERT INTO t_goods (title,sub_title,origina…

向量庫集成指南

文章目錄 向量庫集成指南Chroma集成Pinecone集成MiLvus集成向量庫集成指南 向量庫是一種索引和存儲向量嵌入以實現高效管理和快速檢索的數據庫。與單獨的向量索引不同,像Pinecone這樣的向量數據庫提供了額外的功能,例如,索引管理、數據管理、元數據存儲和過濾,以及水平擴展…

軟件測試之使用Requests庫進行接口測試

文章目錄 前言Requests庫是什么為什么要用Requests庫進行接口測試安裝Requests庫Requests庫使用發送GET請求發送帶查詢參數的GET請求響應內容格式添加請求頭信息發送一個POST請求查看響應內容斷言請求超時Cookie與Session模擬登錄 參考目錄 前言 閱讀本文前請注意最后編輯時間…