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

这篇具有很好参考价值的文章主要介绍了[QDialog]qt虚拟键盘的实现以及qdateedit实现打开虚拟键盘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、虚拟键盘的拖动

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

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

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

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

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

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

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

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

三、具体函数的实现

3.1初始化

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

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

3.2读取字符

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

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

3.3增加字符

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

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

3.4删除字符

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

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

3.5槽函数

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

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

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

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

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

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

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

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

5.1安装事件过滤器

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

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

5.2写事件过滤  

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

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

虚拟键盘参考Qt 实现虚拟键盘_lie to me的博客-CSDN博客_qt 虚拟键盘文章来源地址https://www.toymoban.com/news/detail-489379.html

到了这里,关于[QDialog]qt虚拟键盘的实现以及qdateedit实现打开虚拟键盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM Linux QT虚拟键盘的系列问题

    最近在做Linux系统的虚拟键盘功能,其中遇到很多问题,在此一一记录。 使用的系统平台为ARM Ubuntu18.04的系统,安装的QT版本为5.9.5,使用指令安装QT,安装后该版本QT默认不带虚拟键盘。 本文附带虚拟键盘所使用的部署文件,如果没有太大需求可以直接使用文件部署。 遇到的

    2024年02月11日
    浏览(52)
  • QT 虚拟键盘问题解决,dialog,模态窗口,无感知

    目前各个帖子都没有完美解决QT下模态窗口的键盘无响应问题,此帖已解决此问题。 问题原因:原因主要是模态窗口卡住了虚拟键盘的事件响应,导致两者冲突,出现界面假死现象 目前主要解决方案是设置Dialog为非模态窗口,此法属于绕过虚拟键盘问题,模态窗口的作用就没

    2024年02月09日
    浏览(43)
  • 【Qt学习】04:QDialog

    对话框是 GUI 程序中不可或缺的组成部分,对话框通常会是一个顶层窗口出现在程序最上层,用于实现短期任务或者简单用户交互。 Qt 中使用QDialog类实现对话框,通常会设计一个类继承QDialog。如果QDialog 的 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件

    2024年02月10日
    浏览(53)
  • Qt之对话框(QDialog)

    提示:以下是本篇文章正文内容,下面案例可供参考 对话框是和用户简短交互的一种窗口。如:登录界面,关于界面,选择文件界面… 他不能放在在其他的Qt组件里面。 我们可以在main.cpp中写下面的代码: 实验1: 我们可以看到,QDialog指定了父类,可还是出现了2个窗口,可

    2023年04月20日
    浏览(32)
  • Qt QWidget、QDialog、QMainWindow的区别

    QWidget QWidget 是Qt框架中最基础的窗口类,可以理解为用户界面的最基本单元。QWidget类提供了一个空白窗口,可以通过继承该类来创建自定义的窗口类。QWidget类提供了基本的窗口属性和方法,如大小、位置、标题、图标等。 QDialog QDialog 是QWidget类的子类,用于创建对话框窗口

    2024年02月08日
    浏览(27)
  • 嵌入式Qt 对话框及其类型 QDialog

    对话框是与用户进行简短交互的顶层窗口。 QDialog是Qt中所有对话框窗口的基类。 QDialog继承与QWidfet是一种容器类型的组件。  QDialog的意义: QDialog作为一种专业的交互窗口而存在。 QDialog不能作为子部部件嵌入其他容器中。 QDialog是定制了窗口式样的特殊的QWidget。 模态对话框

    2024年04月11日
    浏览(28)
  • QT基础教程之五对话框QDialog

    对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。 Qt 中使用QDialog类实现对话框。就像主窗口一样,我们通常会设计一个

    2024年02月10日
    浏览(31)
  • Qt6.2教程——2.介绍 Qt 中的 QWidgets、QMainWindow 和 QDialog

    Qt 是一个广受欢迎的跨平台 C++ GUI 库。在 Qt 中,创建图形用户界面的基本单元是 Widget。本文将详细介绍三个重要的 Widget 类: QWidget , QMainWindow 和 QDialog ,并比较它们的特点和用途。 概述 QWidget 是 Qt 中所有用户界面元素的基类。从按钮到文本框,甚至包括窗口和对话框,所

    2024年02月10日
    浏览(56)
  • Qt应用开发(基础篇)——对话框窗口 QDialog

            QDialog 类继承于QWidget,是Qt基于对话框窗口(消息窗口 QMessageBox 、颜色选择窗口 QColorDialog 、文件选择窗口 QFileDialog 等)的基类。           QDialog 窗口是顶级的窗口,一般情况下,用来当做用户短期任务(确认、输入、选择)或者和用户交流(提示、错误、警告、进

    2024年02月10日
    浏览(32)
  • Qt获取键盘按键ctrl和alt以及shift按键按下和松开

    .h文件中定义 这里主要为了获取按键ctrl和alt以及shift按键按下和松开来达到对QTableWidget中的内容进行多选 但是这引入了一个问题,那就是当前界面想要使用按键捕获,就需要在切换到该界面时调用: grabKeyboard() 那么在这个例子中就是调用 my_record-grabKeyboard(); 到达获取键盘的

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包