最近调用系统键盘的时候有些时候系统的键盘并不满足需求,所以做了个小Demo

先看一下效果:

看一下核心代码:


#include "skeyboard.h"SKeyboard::SKeyboard(QWidget *parent) : QWidget(parent)
{for(int i = 0; i < 43; i++) {QPushButton* tmp_btn = new QPushButton(this);tmp_btn->setStyleSheet("QPushButton{border-image:url(:/blue.png);} \QPushButton::hover {border-image:url(:/blue_hover.png);} \QPushButton::pressed {border-image:url(:/blue_press.png);}");connect(tmp_btn, &QPushButton::clicked, [=]{emit sigKeyPress(tmp_btn->text());});m_keys << tmp_btn;}this->resetKeyPosSize();this->resetText();
}void SKeyboard::resetText()
{for(int i = 0; i < 10; i++) {m_keys.at(i)->setText(QString::number((i + 1) == 10 ? 0 : (i + 1)));}m_keys.at(10)->setText("Back Space");m_keys.at(11)->setText("Q");m_keys.at(12)->setText("W");m_keys.at(13)->setText("E");m_keys.at(14)->setText("R");m_keys.at(15)->setText("T");m_keys.at(16)->setText("Y");m_keys.at(17)->setText("U");m_keys.at(18)->setText("I");m_keys.at(19)->setText("O");m_keys.at(20)->setText("P");m_keys.at(21)->setText("A");m_keys.at(22)->setText("S");m_keys.at(23)->setText("D");m_keys.at(24)->setText("F");m_keys.at(25)->setText("G");m_keys.at(26)->setText("H");m_keys.at(27)->setText("J");m_keys.at(28)->setText("K");m_keys.at(29)->setText("L");m_keys.at(30)->setText(".");m_keys.at(31)->setText("Z");m_keys.at(32)->setText("X");m_keys.at(33)->setText("C");m_keys.at(34)->setText("V");m_keys.at(35)->setText("B");m_keys.at(36)->setText("N");m_keys.at(37)->setText("M");m_keys.at(38)->setText("@");m_keys.at(39)->setText("Left");m_keys.at(40)->setText("Right");m_keys.at(41)->setText(".com");m_keys.at(42)->setText("Enter");
}void SKeyboard::resetKeyPosSize()
{//1for(int i = 0; i < 10; i++) {m_keys.at(i)->resize(55, 55);m_keys.at(i)->move(10 + i * 60, 10);}//2for(int i = 11; i < 21; i++) {m_keys.at(i)->resize(55, 55);m_keys.at(i)->move(10 + (i - 11) * 60, 75);}//3for(int i = 21; i < 31; i++) {m_keys.at(i)->resize(55, 55);m_keys.at(i)->move(10 + (i - 21) * 60, 140);}//4for(int i = 31; i < 41; i++) {m_keys.at(i)->resize(55, 55);m_keys.at(i)->move(10 + (i - 31) * 60, 205);}//right backspace-enter-comm_keys.at(10)->resize(125, 55);m_keys.at(10)->move(610, 10);m_keys.at(10)->setStyleSheet("QPushButton{border-image:url(:/blue_space.png);} \QPushButton::hover {border-image:url(:/blue_spaceHover.png);} \QPushButton::pressed {border-image:url(:/blue_spacePress.png);}");m_keys.at(41)->resize(125, 55);m_keys.at(41)->move(610, 205);m_keys.at(41)->setStyleSheet("QPushButton{border-image:url(:/blue_space.png);} \QPushButton::hover {border-image:url(:/blue_spaceHover.png);} \QPushButton::pressed {border-image:url(:/blue_spacePress.png);}");m_keys.at(42)->resize(125, 120);m_keys.at(42)->move(610, 75);
}

代码已经上传到CSDN,可以自行下载:

http://download.csdn.net/detail/u014597198/9760954

自制虚拟键盘Demo相关推荐

  1. Qt5.13.0虚拟键盘 使用文档说明及函数说明 (一)构建 build

    首先之前的工作都是为了想验证虚拟键盘的使用,才有了之前编译x11 .arm等qt的步骤. 在到这之前的构建环境,我说认真的,真的烦的要死,每次构建用的时间又多,配置完了编译会出一大堆error,加上公 ...

  2. 【BUG】小米5中 video.js 在钉钉 webview 中全屏后 后退无法弹出虚拟键盘

    BUG背景 触发环境 MI 5 或 MI 6(三星没问题) 钉钉3.5.3(开发版没问题)Webview [WebKit 537.36 Chrome 57.0.2987.132](识别方法见文末) v ...

  3. 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop...

    重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop 原文:重新想象 Window ...

  4. PP视频怎么关闭PP视频虚拟键盘显示

    今天小编给广大用户分享PP视频怎么关闭PP视频虚拟键盘显示.此外,在PP视频视频播放器上观看更流畅,画质更清晰,拒绝卡慢钝,而且还有许多自制独播综艺,让你看到停不下来!PP视频视频播放器是PP视频官方 ...

  5. html5 5s自动返回键,关于HTML5页面与手机虚拟键盘的回车的处理

    要支持手机虚拟键盘的回车键能触发当前页面的提交效果,需要满足一下几点 一,存在form元素以及submit类型的input子元素 二,需要将form的onsubmit属性绑定包含返回布尔值的方法 关于 ...

  6. JavaScript 虚拟键盘 A-Keyboard

    A-Keyboard A-Keyboard是一个小型的 JavaScript 虚拟键盘. A-Keyboard Github Demo 网站查看在线 键盘.数字键盘.手机键盘 Demo. 我们为你提供 ...

  7. Qt-Arm交叉编译以及调用虚拟键盘(中英)

    环境:Qt5.15.1 交叉编译链:海思的板子,arm-himix200-linux- demo代码:Qt-Qml混合编程 第一步:环境搭建 1:从官网下载源码https://download.qt. ...

  8. android监控虚拟键盘,android虚拟键盘的监控,显示和隐藏

    android虚拟键盘的监控,显示和隐藏 听到一个键盘监控[显示.隐藏]的问题,上网找了下解决方案. 有提到使用onSizeChange方法监控的,也有监控onLayout方法的. 思路:在弹出键盘时 ...

  9. android华为手机虚拟键盘盖住底部,Android 虚拟键盘遮挡住页面问题我遇到的坑及个人解决办法...

    场景:某个页面多个组件.总体排版正好凑成满屏.一切按照UI给的标注效果图来.大部分机型测试通过.没有问题.华为手机有问题 兼容性:华为手机修改了虚拟键盘的位置.用户可以自由控制显示与隐藏虚拟键盘出现在 ...

最新文章

  1. js判断鼠标位置是否在某个div中
  2. Ubuntu18.04安装Dlib-19.19.0成功
  3. OSPF邻接形成过程
  4. docker run与docker start的区别?
  5. MessageQueue Message Looper Handler的解释说明
  6. vim 设置支持鼠标
  7. Linux Shell 操作命令 ls
  8. 推荐一种优秀的数据结构技巧
  9. FPGA 按键控制数码管
  10. pp助手苹果版_吃药提醒助手ios版下载-吃药提醒助手苹果版下载v1.0
  11. 表情识别(一)——使用Dlib、opencv和Python识别面部特征
  12. 三星Note3 SM-N9009 国内天翼版本安装谷歌框架
  13. 关于killer网卡与win10 擦出火花 内存爆炸的原因
  14. unity导出fbx模型_美术资源标准(模型篇)
  15. Unity TileMap 2D 工具基础教程
  16. java 代码书写规范_代码书写规范和命名规范
  17. 复习3个月,雅思首考7.0
  18. js根据日期时间区间获取季度Q1-Q4列表
  19. win2003 如何更换cd key?
  20. 两次拉格朗日中值证明曲线凹凸性定理_2016514

热门文章

  1. DNA Regions
  2. word2007的大纲级别自动修改为1的解决办法
  3. QQ空间里的“可能认识的人”深层思考????
  4. 我遇到的Java面试题
  5. 简易解说拉格朗日对偶(Lagrange duality)
  6. 许庆祥:神秘的“台湾股神”总有满手好牌
  7. 【黑马程序员】 学习笔记 - Java数组及排序算法
  8. 小米6显示服务器出错,从小米6到小米10,为何小米手机都会出现Wi-Fi断流的问题?...
  9. 【翻译】和麻美学姐一起的世界树(マミさんと世界樹スレ)第五话
  10. 历时六年,东安汽发实现自动变速器领域新突破