完美解决Qt Qml窗口全屏软键盘遮挡不显示

1、前提

说明:我使用的是第三方软键盘 QVirtualKeyboard

QVirtualKeyboard: Qt5虚拟键盘支持中英文,仿qt官方的virtualkeyboard模块,但使用QWidget实现。 - Gitee.com

由于参考了几篇文章尝试但没有效果,链接如下:

文章一:可能对qml程序无效

Qt程序全屏后调用软键盘时键盘无法输入的解决方法_qt spinbox 不能用键盘输入-CSDN博客

文章二:反正就是没效果

Qt编写的qml程序全屏时,挡住系统虚拟键盘的解决办法_qml 软键盘 遮挡-CSDN博客

效果图展示:

完全看不出来应用没有完全全屏不是吗?

2、解决思路

测试发现只要窗口全屏并且无边框、那么软键盘就会被遮挡。

甚至不设置全屏,只要宽高和屏幕尺寸一致就会遮挡软键盘。

原理不太懂,也不愿意花太多时间去研究软键盘代码实现。

经过我测试发现,窗口尺寸比屏幕尺寸少1像素,仍然可以做到显示完全全屏,并且可以弹出软键盘。

那么直接隐藏窗口标题栏,和桌面的任务栏,并且将窗口尺寸小1像素,就可以做到应用全屏,并且不影响软键盘使用了。

3、操作方法

1、qml代码在窗口中设置无边框,隐藏标题栏,设置屏幕高度比屏幕小1像素

import QtQuick 2.7
import QtQuick.Window 2.8

Window {
    id: root
    visible: true
    width: 1280 //实际宽度1280
    height: 799 //实际高度800
    flags:Qt.FramelessWindowHint    //设置无标题栏
    //你的代码
}

2、设置任务栏自动隐藏

参考文章:RK3399 Ubuntu修改任务栏为自动隐藏和修改桌面背景_ubuntu 命令行设置任务栏隐藏-CSDN博客

3、设置任务栏宽度为0

任务栏宽度太宽,指针滑到屏幕底部很容易导致任务栏取消隐藏,宽度设置0,使用触摸屏几乎是无法唤起任务栏,虽然使用鼠标可以,但是正常商用环境主机是不接鼠标的不是吗?

补充:由于QVirtualKeyboard是基于QWidget的,在需要QApplication程序才能触发,所以需要把main函数中的QGuiApplication app() 改成QApplication app()

4、方案补充

好吧,高度差1像素还是有影响的,在有些情况下会出现屏幕边缘一条亮线的情况。

更好一些的方案窗口全屏,再点击输入框之后改变窗口高度,另外调整QVirtualKeyboard的软键盘宽度和屏幕宽度一致,这样在需要输入的情况调整窗口高度让软键盘显示出来,输入完成窗口全屏显示就行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/930050.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Bootstrap-HTML(三)Bootstrap5列表组全解析

Bootstrap-HTML(三)Bootstrap5列表组全解析 前言(一)HTML 列表基础回顾1.无序列表2.有序列表3.定义列表 二、无样式的有序列表和无序列表内联列表 三、Bootstrap5 列表组1.基础的列表组2.设置禁用和活动项3.链接项的列表组4.移除列…

rockit 学习、开发笔记(六)(VENC)

前言 上节我们讲到了VDEC解码模块,那当然少不了VENC编码模块了,一般有编解码的需求都是为了压缩视频的大小,方便减少传输所占用的带宽。 概述 VENC 模块,即视频编码模块。本模块支持多路实时编码,且每路编码独立&am…

使用Dapper创建一个简单的查询

1.先在NuGet上下载Dapper包 2.创建对应的model 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 数据显示 {public class User{public int UserId { get; set; }public…

wireshark网络安全流量分析基础

网络安全流量分析领域中,wireshark和csnas是取证、安全分析的好工具,包括很多研究安全规则、APT及木马流量特征的小伙伴,也会常用到两个工具。这两款流量嗅探、分析软件,今天先介绍wireshark作为安全分析工具的基本使用。 2|002.…

深度学习笔记25_LSTM实现糖尿病探索与预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 一、我的环境 1.语言环境:Python 3.9 2.编译器:Pycharm 3.深度学习环境:TensorFlow 2.10.0 二、GPU设置…

使用docker创建cloudstack虚拟主机

文章目录 概要 环境准备: 1.使用rockyLinux:8镜像 2.配置yum源 3.添加vim cloudstack.repo为以下内容 4.前期我们已经搭好了cloudstack平台,这里需要映射几个目录到容器里面, 5.创建Dockerfile 6.构建镜像 7.使用命令创建…

云计算对定制软件开发的影响

在当代数字世界中,云计算是改变许多行业(包括定制软件开发)的最伟大的革命性趋势之一。由于这些公司努力寻求更好、更多不同的方式来履行职责,因此云计算与传统的内部部署基础设施相比具有许多不可否认的优势。这种范式转变对定制…

Ubuntu Linux用户与组的管理

Ubuntu Linux操作系统- 第一弹 由猪猪侠开启Linux操作系统的学习 文章目录 前言Linux操作系统的发展Linux版本 Linux用户账户及其类型超级用户系统用户普通用户 Ubuntu超级用户权限与管理员Linux的超级用户权限解决方案Ubuntu管理员sudo命令su命令Ubuntu启用root登录 组账户及其…

案例研究|HYPER PaaS低代码工具携手DataEase嵌入式版,服务工业制造企业数智化转型

杭州星瀚智磐科技有限公司(以下简称为“星瀚智磐”)成立于2021年,是一家专注于低代码平台研发的高科技企业。星瀚智磐的核心产品HYPER PaaS低代码工具主要为制造业用户提供数字化解决方案。HYPER PaaS基于低代码平台简单的拖拉拽操作&#xf…

Linux-实用操作

文章目录 一. 各类实用小技巧(快捷键)1. ctrl c 强制停止2. ctrl d 退出登出3. history 查看历史命令4. !命令前缀,自动匹配上一个命令5. ctrl r,搜索历史命令6. ctrl a | e,光标移动到命令开始或结束7. ctrl ← | →,左右跳…

部署项目报错

vue2项目部署后 Error: Cannot find module /views/*** 1.起因 登录页、首页等静态页面可以正常进入,后端访问也正常,可以获取到验证码。 但是登录之后会发现首页空白或者进入不到首页 F12查看有报错信息:Error: Cannot find module ‘/v…

微信小程序配置less并使用

1.在VScode中下载Less插件 2.在微信小程序中依次点击如下按钮 选择 从已解压的扩展文件夹安装… 3.选中刚在vscode中下载安装的插件文件 如果没有修改过插件的安装目录,一般是在c盘下C:\用户\用户名.vscode\extensions\mrcrowl.easy-less-2.0.2 我的路径是&#xf…

gpt-computer-assistant - 极简的 GPT-4o 客户端

更多AI开源软件: AI开源 - 小众AIhttps://www.aiinn.cn/sources gpt-computer-assistant是一个将 ChatGPT MacOS 应用程序提供给 Windows 和 Linux 的替代工作。因此,这是一个全新且稳定的项目。此时,您可以轻松地将其作为 Python 库安装&am…

使用PPT科研绘图导出PDF边缘留白问题解决方案

使用PPT画图导出PDF格式后,边缘有空白,插入latex不美观,解决方案为自定义PPT幻灯片母版大小,如题步骤为: 1、查看已制作好的图片的大小,即长度和宽度 2、选择自定义幻灯片大小 3、自定义幻灯片大小为第1…

【PyTorch】(基础三)---- 图像读取和展示

图像读取和展示 pytorch本身并不提供图像的读取和展示功能,利用pytorch执行计算机视觉任务的时候,通常是利用opencv等工具先进行图像处理,然后将结果转化成tensor类型传递给pytorch,在pytorch执行之后,也可以将tensor…

智能合约

06-智能合约 0 啥是智能合约? 定义 智能合约,又称加密合约,在一定条件下可直接控制数字货币或资产在各方之间转移的一种计算机程序。 角色 区块链网络可视为一个分布式存储服务,因为它存储了所有交易和智能合约的状态 智能合约还…

LeetCode 热题100(十五)【动态规划】(3)

15.7最长递增子序列(中等) 题目描述:leetcode链接 300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元…

Vector软件CANdb++的信号起始位Bug

问题现象 前几天导入DBC文件发现不对劲,怎么生成代码的起始地址都怪怪的,检查下工程里面的配置,还真的是这样,一路查到输入文件——DBC文件,发现是DBC文件就有错误:一些CAN报文之后8字节长度,也…

初始Python篇(6)—— 字符串

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 字符串的常见操作 格式化字符串 占位符 f-string 字符串的 format 方法 字符串的编码与解码 与数据验证相关的方法 …

【Axure视频教程】中继器表格——筛选后的条件判断

今天教大家在Axure制作中继器表格筛选以及筛选后条件交互的原型模板,我们可以在输入框里输入员工姓名,点击查询按钮后可以筛选出对应的数据,筛选后会进行条件判断,如果筛选不到任何数据,就会显示提示弹窗。这个原型模板…