一、虚拟键盘的拖动

首先,实现虚拟键盘的拖动功能就需要对QDialog的鼠标事件进行重写,所以就需要自己写一个继承于QDialog的子类。

这里代码参考qt实现窗口拖动的两种思路_肩上风骋的博客-CSDN博客_qt 拖动窗口

二、创建QDialog类继承于自己写的dialog类并布局键盘界面

这里除了构造函数以外,还需要初始化、读取字符、添加字符、删除字符四个函数以及一个按钮按下的槽函数,然后对按钮界面进行布局,我的布局如下:。

一个lineedit以及一些按钮,我这里是写了一个自定义的按钮类,将按钮都提升为我自定义的类型,可以使得按钮更美观。

三、具体函数的实现

3.1初始化

初始化中是对所有的自定义按钮连接信号与槽,其中findChildren<>函数是搜寻所有能转换为指定类型的控件,这个用于批量处理非常方便,所以这里就批量将按钮的clicked信号与自定义的clicked槽函数绑定。

3.2读取字符

打开键盘时,要将目标的lineEdit的内容读取到键盘中的lineEdit中,并将私有成员变量value也进行初始化,该函数在构造函数中调用。

3.3增加字符

实现点击按钮增加对应的字符,并更新lineEdit显示的内容。

3.4删除字符

实现点击删除按钮时,删除一个字符。

3.5槽函数

第一步是获取发送信号的按钮的指针,根据指针来判断当前的按钮是哪种类型。第二步针对不同类型做出不同处理,当类型是关闭按钮时就触发qdialog自带的reject信号实现关闭对话框;是接收按钮时就触发qdialog自带的accept信号,这个是用于要写入数据的QLineEdit的信号,后面会用到;是删除按钮就调用删除字符的函数;剩下的就只有添加字符的按钮也就是键盘上的各个数字,实现增加字符。

4、自定义QLineEdit实现点击打开自定义键盘

这里只需要重写lineEdit的mousePressEvent事件,在事件中添加以下代码。

这里意思是当QLineEdit检测到鼠标按下事件时,打开键盘,并用exec()循环检测是否有Accepted信号触发,这个accepted信号就是前面那个槽函数点击确定时触发的信号,收到这个信号就读取键盘中当前的value的值并写入到控件中。

5、qdateedit和qtimeedit控件实现点击打开自定义键盘

首先也是需要重写这两个类,但与QlineEdit不同的是,这两个控件本身是组合型控件,所以不能简单的重写mousePressEvent事件,而是需要用到事件过滤器。

5.1安装事件过滤器

这里的lineEdit()就是返回一个QLineEdit对象,这个是这个控件本身获取lineedit子控件的一个方法。

5.2写事件过滤

这里的主要逻辑是,判断是否是lineedit子控件的鼠标按压事件,如果是就打开键盘,之后根据点击位置的不同来对时、分、秒的数据进行修改,修改完后同样是用exec()循环检测信号来实现输入。

虚拟键盘参考Qt 实现虚拟键盘_lie to me的博客-CSDN博客_qt 虚拟键盘

[QDialog]qt虚拟键盘的实现以及qdateedit实现打开虚拟键盘相关推荐

  1. 计算机软键盘怎么打开,如何打开软键盘,详细教您电脑怎么打开软键盘

    软键盘有什么好处?在网上付款或者要打开一些机密的文件需要输入密码,这时候软键盘就可以派上用场了,这也是为了防止木马记录键盘输入的密码.那么该怎么去打开软键盘呢?下面,小编就来跟大家介绍电脑打开软键盘的 ...

  2. android怎么调出虚拟手机,如何在android手机上打开虚拟光驱

    虚拟光驱以其读取速度快.换盘方便.管理容易得到了广大用户的青睐.但是虚拟光驱软件众多,每个软件都各有千秋. 虚拟光驱有很多一般光驱无法达到的功能,例如运行时不用光盘,即使没用光驱也可以,同时执行多张光 ...

  3. win7系统怎么打开屏幕键盘

    win7系统怎么打开屏幕键盘?我们在电脑没有接入键盘或者键盘失灵等情况下,如果想要输入内容,可以使用系统自带的屏幕键盘.只需要在控制面板中打开屏幕键盘就可以使用了,下面就让我们一起看看win7系统屏幕 ...

  4. android平板电脑的虚拟键盘,触控、手写、虚拟键盘的操作体验

    ·触控.虚拟键盘的操作体验 谈到操作体验,它与系统UI设计紧密相连,戴尔Streak采用了我们熟悉的Android操作系统,该系统对触控操作有较好的优化,特别是一些细节之处,譬如菜单图标的操作方面,大 ...

  5. [AHK]Windows10中如何只通过键盘就将窗口移动到其他虚拟桌面?

    最新解决办法: ; Capslock + 数字 --> 切换桌面 ; Capslock + Shift + 数字 --> 把当前窗口带到某桌面 ; [Switch to desktop] ...

  6. android webview监听软键盘弹出和隐藏来修改虚拟导航栏颜色

    最近项目中用到了webview,然后里面有输入框,当我们点击输入框的时候,软键盘挡住了布局,这就尴尬了,并且产品说,只有在软键盘弹出的时候底部的虚拟导航栏为黑色,软键盘隐藏的时候虚拟导航栏应该也隐藏. ...

  7. Android下强制打开软键盘

    这个也是累人,网上查了很多方法,没有实现需求. 最后的实现方法很简单.代码: 1 //通过定时器强制打开虚拟键盘 2 public static void TimerShowKeyboard(fina ...

  8. 观看实验中微型计算机虚拟拆装演示,虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0...

    下面我们对虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0文件阐述相关使用资料和虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0文件的更新信息. 虚拟仿真实验 北斗一号微机 ...

  9. 计算机键盘上的基准键是哪两个键,键盘上的基准键分别是什么?

    键盘上8个基准按键分别是: 左手是 A.S.D.F 四个,右手是 J.K.L.:四个. 键盘是最常用也是最主要的输入设备,通过键盘可以将英文字母.数字.标点符号等输入到计算机中,从而向计算机发出命令. ...

最新文章

  1. Python的控制语句4
  2. python函数必背知识点_必背函数——python学习第四次总结
  3. pythonmessage用法_请问Mac下如何用python读取iMessage信息?
  4. django+mysql+插入数据库网页展示内容
  5. 李彦宏、王海峰等成为工程院院士候选人选
  6. 小米首部5G手机正式发布 海外营收将很快超过国内
  7. JavaScript 演练(8). 对象成员、类成员(原型、非原型)
  8. 100%在CSS中是什么意思?
  9. Conky--linux自定义桌面监控
  10. echarts:中国地图-省市区二级联动
  11. 类似QQ的可隐藏的便签工具SNOTE
  12. 小程序报错 出现脚本错误或者未正确调用 Page()
  13. office2019word2019excel2019ppt2019关闭自动更新设置步骤
  14. 如何缓解百度网盘限速问题
  15. C盘爆满上热搜,简单几招释放几十G空间,一下子就不红了
  16. html点击出现对勾,css伪类右下角点击出现对号角标表示选中的代码
  17. NB-IoT 的“前世今生” 1
  18. Debian各个版本下载地址
  19. 将军百战声名裂:泣血说李陵
  20. python黑洞数——超简单方法O

热门文章

  1. python不支持下标访问元素吗_Python 集合不支持使用下标访问其中的元素
  2. APMServ 5.2.6
  3. 基于Spring Boot框架的驾校学员信息管理系统
  4. win10网络连接为地球禁用标志解决办法
  5. DSG-01-3C4-A110-51T油研液压直动式电磁阀
  6. 语音入口大战升级,Echo音箱还不是杀手锏,等所有汽车都用上Alexa就不一样了
  7. SRS4.0源码分析-state-thread
  8. WMS系统架构设计的演变与选择
  9. python输入一个英文句子、统计单词个数_C语言编程求一个英文句子中的单词数和最长单词的位置、长度及输出这个单词。c++编程 从键盘输入一个英文...
  10. 有趣的灵魂万里挑一:从智能座舱看汽车进化史