Qt for Android 開發大坑

Qt for Android 開發大坑

作者: qyvlik

Qt 5.5.1

這里說一說比較常見的 Qt 開發安卓的大坑。

希望同學們不要做無謂的掙扎,跳過這些坑。

輸入框

首當其沖的是輸入框,Qt 的輸入在安卓上表現不佳.

  1. 無法支持安卓原生的輸入法訪問 Qt 的輸入框。就是安卓輸入法無法復制,粘貼,剪切 Qt 輸入框中的文本。

  2. 無法支持使用觸摸的方式選中 Qt 輸入框中的文字。

  3. 假設輸入框的位置處于應用底部,相似于 IM 那種聊天工具,應當注意。

    a. 假設應用 Activity 設置為 android:windowSoftInputMode="adjustResize",彈出輸入法時。應用界面就會進行縮放。這個時候。應用界面就會閃爍。

    b. 假設應用 Activity 設置為 android:windowSoftInputMode="adjustPan",應用界面的頭部就會被頂出屏幕。

  4. 為了修復上訴的問題,參照例如以下步驟

    a. 先設置應用 Activity 設置為 android:windowSoftInputMode="adjustPan",這樣。彈出輸入法時,就不由于界面縮放而閃爍。

    b. 獲取到安卓輸入法高度。

    c. 改動輸入框,使其被點擊獲取焦點之前,先彈出輸入法(Qt.inputMethod.show()),由于不是輸入框獲取焦點而彈出輸入發。所以界面既不會閃爍,也不會相對屏幕向上位移。(就是在 TextField 上放一個 MouseArea

    d. 在輸入法彈出后,就能夠獲取鍵盤高度(假設在安卓上獲取鍵盤高度,是須要寫一些 Java 代碼的)。

    e. 獲取到鍵盤高度后,直接位移輸入框(延時處理),然后 forceActiveFocus 強制獲取焦點。

  5. 上訴解決方式又引發一個問題,且聽我細細道來。

    a. 首先 Qt.inputMethod.show() 在安卓上能夠直接顯示鍵盤。然后顯示時不會直接縮放界面(造成閃爍)或者將界面頂出屏幕。

    b. 接著,輸入框是一個特殊的控件。在輸入框獲取虛擬鍵的焦點后。安卓上的輸入法會直接記住這個控件的位置。

    c. 再下一次直接調用 Qt.inputMethod.show() 時。會找到上一次獲取焦點的輸入框的位置,依據這個位置,彈出虛擬鍵破并將界面頂出屏幕。然后輸入框才會拿到鍵盤高度。位移。

  6. 為了再解決上訴的問題。還得記錄下安卓上鍵盤的高度,然后依據鍵盤高度決定先使用 Qt.inputMethod.show() 彈出鍵盤,還是先位移輸入框。

    TODO

已經具現化的解決方式GDPURJYFS/WellChat,演示視頻安卓修復鍵盤彈出界面不友善問題修復終版Demo。當然如今這些方案都有各種各樣的問題,詳細要做的。事實上是希望官方修復鍵盤彈出,界面縮放時閃爍的這個問題。

Qt Android 鍵盤問題

攝像頭

Qt 安卓應用上的攝像頭。假設直接使用 QtMultimedia::Camera 可能會出現無法非常好對焦的情況,而且各個機型和不同版本號系統上表現不一致。華為手機對 Qt 的支持不佳,問題會略微多一些。

解決方法:

能夠直接通過調用系統的攝像軟件,詳細參照QtAndroid詳細解釋(3):startActivity實戰Android拍照功能,詳細代碼 A-week-to-develop-android-app-plan/demos/CallNativeCamera。

SplashScreen

啟動屏,據多數 Qter 反映。Qt 安卓應用啟動時。會顯示一個無內容。帶有標題和應用 Icon 的黑色畫面。無法直接預先顯示 SplashScreen。

本地多媒體縮略圖

網絡資源能夠通過現有的 C++ 接口進行優化,緩存。

可是本地多媒體縮略圖支持。須要自行構建一個好用的。

網頁支持

Qt 對移動平臺的網頁支持,應該是試圖通過在 QtSurface 上繪制原生網頁進行支持,所以 Qt 的網頁支持對于移動平臺來說是非常孱弱的。然后 QtWebEngine 是基于谷歌的 Chromium 的,Chromium 如今對 VS 編譯支持最好。Chromium 對 MinGW 的支持基本是沒有的。

如今 Qt 在手機設備上,使用 QtWebView 也就是在 QtSurface 上繪制原生網頁作為 Qt 在移動端上網頁的解決方式。

本地化地圖

QtQuick 中是支持地圖插件的。可是官方僅僅是預制了 here 等幾個國外的地圖插件。百度地圖僅僅能自己去封裝插件。

相關討論有關 QML QtLocation 的 Plugin 的使用問題。

轉載于:https://www.cnblogs.com/gavanwanggw/p/7293805.html

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

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

相關文章

bca ac如何聯合索引_BCA的完整形式是什么?

bca ac如何聯合索引BCA:計算機應用學士學位 (BCA: Bachelor of Computer Applications) BCA is an abbreviation of Bachelor of Computer Applications. It is a three-year undergraduate program in Computer applications. It is considered equivalent to B.Te…

path r'c test.html',robot framework - robot命令參數解析

robot 命令參數解析version > 3.0.1原文檔查看命令:robot --helprobot -h-F --extension value通過文件擴展名控制需要執行的用例。如果只執行一個文件,這個參數無效。需要執行多個擴展名時,用“:”分隔開。Examples:--extension robot-F robot:txt-N…

嘿,程序員,你該學點經濟學了!

前言: 筆者一直認為,一個好的程序員,不僅僅是代碼敲得好,其它方面的知識和能力相同非常重要。特別是隨著年齡的增長。非常多人也慢慢的往管理層發展。這個時候溝通與協調能力變得更加重要,而一些策劃,推廣方…

linux硬件配置_Linux硬件配置

linux硬件配置What sort of hardware configuration is expected to run Linux? This is a decent question; the real hardware configuration for the OS changes intermittently. The Linux Hardware?HOWTO gives a (pretty much) complete posting of hardware supported…

重郵2019計算機考研復試名單,重慶郵電大學2019年碩士研究生招生復試通知

當前2019年考研分數線已經公布,穩穩過線的同學即可全心準備復試了,中公考研小編整理了“重慶郵電大學2019年碩士研究生招生復試通知”文章,希望對大家有所幫助!各復試考生:根據《2019年重慶郵電大學碩士研究生復試工作方案》&…

Linux相關圖解隨記

01.dns解析過程02.用戶訪問網站流程03.局域網電腦上網流程04.網站架構圖解轉載于:https://blog.51cto.com/qinbin/1954149

數據庫范式5nf_第五范式(5NF)| 數據庫管理系統

數據庫范式5nfFifth normal form (5NF) is also known as project-join normal form (PJ/NF). It is designed to minimize redundancy in relational databases by separating semantically connected relationships in multiple formats to store multi-valued facts. 第五范…

量子物理 詹班 計算機,(電氣系計算機系詹班)量子物理作業答案

西南交大峨眉校區大學物理西南交大峨眉校區《大學物理》(量子物理基礎)作業6(電氣、計算機、詹班)一 選擇題1. 以一定頻率的單色光照射在某種金屬上,測出其光電流曲線在圖中用實線表示,然后保持光的頻率不變,增大照射光的強度,測出…

MySQL5.6 新特性之GTID【轉】

轉自 MySQL5.6 新特性之GTID - jyzhou - 博客園http://www.cnblogs.com/zhoujinyi/p/4717951.html 背景: MySQL5.6在5.5的基礎上增加了一些改進,本文章先對其中一個一個比較大的改進"GTID"進行說明。 概念: GTID即全局事務ID&#…

python判斷素數程序_Python程序檢查素數

python判斷素數程序什么是質數? (What is a prime number?) A prime number is a natural number that is greater than 1 and cannot be formed by multiplying two smaller natural numbers. 質數是大于1的自然數,不能通過將兩個較小的自然數相乘而形…

計算機高級工程師職稱評定條件,高級工程師職稱評定條件是什么

高級工程師職稱評定條件是什么,高級工程師職稱有什么作用,以下是小編整理的高級工程師職稱評定條件相關內容,供您參考。高級工程師評定條件1、本科畢業及以上,獲得工程師資格5年以上,可以申報高級工程師。2、博士畢業&…

c# datetime._C#| DateTime.Year屬性與示例

c# datetime.DateTime.Month屬性 (DateTime.Month Property) DateTime.Month Property is used to get the year component of this object. Its a GET property of DateTime class. DateTime.Month屬性用于獲取此對象的年份組成部分。 這是DateTime類的GET屬性。 Syntax: 句法…

NO6——KMP

1 int next[N];2 char str1[M],str2[N];3 //str1 長&#xff0c;str2 短4 //len1,len2,對應str1,str2的長5 6 void get_next(int len2)7 {8 int i 0,j -1;9 next[0] -1;10 while(i<len2)11 {12 if(j -1 || str2[i] str2[j])13 {14 …

計算機文化基礎第二章,計算機文化基礎(第二章Windows2000操作系統)

計算機文化基礎(第二章Windows2000操作系統)第二章Windows 2000 操作系統1. 打開“資源管理器”的方法不能是_A右擊“開始”按鈕 B選擇“開始” 、 “程序”菜單 C從“我的電腦”的快捷菜單 D從“控制面板”中選擇2. 在“資源管理器”中選定多個文件的方法不能是_A逐個雙擊要選…

r語言簡介_R語言簡介

r語言簡介R is a language and environment for statistical computing and graphics that is supported by the R Foundation for Statistical Computing. It is a GNU project which is similar to the S language and environment developed at Bell Laboratories by John C…

linux中echo的使用方法

1.echo命令我們經常使用的選項有兩個&#xff0c;一個是-n&#xff0c;表示輸出之后不換行。另外一個是-e&#xff0c;表示對于轉義字符按對應的方式處理&#xff0c;假設不加-e那么對于轉義字符會按普通字符處理。 2.echo輸出時的轉義字符 \b 表示刪除前面的空格 \n 表示換行 …

如何讓計算機兩個用戶使用不同步,如何實現兩臺或多臺電腦遠程修改文件同步更新?...

說起文件同步工具&#xff0c;現在網上這樣的程序很多&#xff0c;微軟也為用戶提供了一款免費的遠程同步軟件——Windows Live Sync。該程序提供的文件同步功能允許用戶在兩臺或更多電腦上對指定的文件夾中的文件進行同步更新。小知識&#xff1a;文件的同步更新&#xff0c;就…

本地事物的簡介

2019獨角獸企業重金招聘Python工程師標準>>> 此章帶大家回顧下本地事物的一些內容。標題 2 事物: 有一組操作構成的可靠,獨立的工作單元----百度百科 事物的四大特性: A:原子性(Atomicity)事務是數據庫的邏輯工作單位&#xff0c;事務中包括的諸操作要么全做&#x…

dbms數據庫管理系統_DBMS中的數據庫語言

dbms數據庫管理系統DBMS數據庫語言 (DBMS Database languages ) Database languages are the languages that provide the facility to specify the database schema and to express database queries and updates. They are further divided into four categories but all are…

物聯網計算機相關專業嗎,物聯網工程屬于計算機專業嗎

勵志語錄(7qianxun.com)不是,物聯網工程本身就是一個專業,屬于工學范疇。本專業學生要具有較好的數學和物理基礎&#xff0c;掌握物聯網的相關理論和應用設計方法&#xff0c;具有較強的計算機技術和電子信息技術的能力。物聯網工程專業就業前景怎么樣教育裝備網、物聯網是繼計…