首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Qt 软键盘(虚拟键盘) 可直接编译,嵌入式使用

后端 98.56KB 13 需要积分: 1
立即下载

资源介绍:

软键盘在Qt工程中已经封装为子工程,demo工程可以直接跑通,亲测。 包括inputnew.h里面有每个函数的注解,适合Qt嵌入式的开发者学习使用。键盘是自适应的
#pragma execution_character_set("utf-8") #include "frminputnew.h" #include "ui_frminputnew.h" frmInputNew *frmInputNew::self = NULL; frmInputNew *frmInputNew::Instance() { if (!self) { static QMutex mutex; QMutexLocker locker(&mutex); if (!self) { self = new frmInputNew; } } return self; } frmInputNew::frmInputNew(QWidget *parent) : QWidget(parent), ui(new Ui::frmInputNew) { //修改1:只有数字键盘和字母键盘,数字键盘大小(320x320),字母键盘大小(500x320) //widgetMain控件改成stackedWidgetMain,添加字母键盘UI和数字键盘UI //修改2:widgetTop控件隐藏 ui->setupUi(this); this->initProperty(); this->initForm(); QTimer::singleShot(1000, this, SLOT(initDb())); } frmInputNew::~frmInputNew() { timerPress->stop(); delete ui; } void frmInputNew::mouseMoveEvent(QMouseEvent *e) { if (mousePressed && (e->buttons() && Qt::LeftButton)) { this->move(e->globalPos() - mousePoint); e->accept(); } } void frmInputNew::mousePressEvent(QMouseEvent *e) { if (e->button() == Qt::RightButton) { mousePressed = true; mousePoint = e->globalPos() - this->pos(); e->accept(); } } void frmInputNew::mouseReleaseEvent(QMouseEvent *) { mousePressed = false; } //事件过滤器,用于识别鼠标单击汉字标签处获取对应汉字 bool frmInputNew::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *mouseEvent = static_cast(event); if (mouseEvent->button() == Qt::LeftButton) { if (obj == ui->labCh1) { setChinese(0); } else if (obj == ui->labCh2) { setChinese(1); } else if (obj == ui->labCh3) { setChinese(2); } else if (obj == ui->labCh4) { setChinese(3); } else if (obj == ui->labCh5) { setChinese(4); } else if (currentEditType != "" && obj != ui->btnClose) { QString objName = obj->objectName(); //qDebug()<<"objName:"<parent() != 0x0 && !obj->property("noinput").toBool() && objName != "frmMainWindow" && objName != "frmInputWindow" && objName != "qt_edit_menu" && objName != "labPY" && objName != "stackedWidgetMain") { if (obj->inherits("QGroupBox") || obj->inherits("QFrame") || obj->inherits("QMenu")) { this->hide(); } else { showPanel(); } } } btnPress = (QPushButton *)obj; if (checkPress()) { isPress = true; timerPress->start(500); } return false; } } else if (event->type() == QEvent::MouseButtonRelease) { btnPress = (QPushButton *)obj; if (checkPress()) { btnPress->setAttribute(Qt::WA_UnderMouse, false); QHoverEvent hoverEvent(QEvent::HoverLeave, QPoint(4, 4), QPoint(0, 0)); QApplication::sendEvent(btnPress, &hoverEvent); isPress = false; timerPress->stop(); } return false; } else if (event->type() == QEvent::KeyPress) { //如果输入法窗体不可见,则不需要处理 if (!isVisible() && !mini) { return QWidget::eventFilter(obj, event); } QString labText = ui->labPY->text(); QKeyEvent *keyEvent = static_cast(event); //Shift切换输入法模式,esc键关闭输入法面板,空格取第一个汉字,退格键删除 //中文模式下回车键取拼音,中文模式下当没有拼音时可以输入空格 if (keyEvent->key() == Qt::Key_Space) { if (labText != "") { ui->labPY->setText(""); setChinese(0); return true; } else { return false; } } else if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter) { if (labText != "") { insertValue(labText); ui->labPY->setText(""); selectChinese(); } else { this->setVisible(false); } return true; } else if (keyEvent->key() == Qt::Key_Control) { if (mini) { ui->btnType->click(); return true; } } else if (keyEvent->key() == Qt::Key_Shift) { if (!mini) { ui->btnType->click(); return true; } } else if (keyEvent->key() == Qt::Key_Escape) { ui->btnClose->click(); return true; } else if (keyEvent->key() == Qt::Key_Backspace) { if (inputType == "chinese") { QString txt = labText; int len = txt.length(); if (len > 0) { ui->labPY->setText(txt.left(len - 1)); selectChinese(); return true; } } } else if (keyEvent->key() == Qt::Key_CapsLock) { ui->btnUpper->click(); return true; } else if (keyEvent->text() == "+" || keyEvent->text() == "=") { if (labText != "") { ui->btnNext->click(); return true; } else { return false; } } else if (keyEvent->text() == "-" || keyEvent->text() == "_") { if (labText != "") { ui->btnPre->click(); return true; } else { return false; } } else { if (currentEditType == "QWidget") { return false; } QString key; if (inputType == "chinese") { key = keyEvent->text(); } else if (inputType == "english") { if (upper) { key = keyEvent->text().toUpper(); } else { key = keyEvent->text().toLower(); } } if (!key.isEmpty()) { QList btn = this->findChildren(); foreach (QPushButton *b, btn) { QString text = b->text(); if (!text.isEmpty() && text == key) { b->click(); return true; } } } } return false; } return QWidget::eventFilter(obj, event); } void frmInputNew::initProperty() { ui->btnDot->setProperty("btnOther", true); ui->btnSpace->setProperty("btnOther", true); ui->btnEnter->setPro

资源文件列表:

inputnew.zip 大约有32个文件
  1. untitled7/
  2. untitled7/inputnew/
  3. untitled7/inputnew/frminputnew.cpp 39.74KB
  4. untitled7/inputnew/frminputnew.h 4.57KB
  5. untitled7/inputnew/frminputnew.ui 37.35KB
  6. untitled7/inputnew/image/
  7. untitled7/inputnew/image/close_black.png 490B
  8. untitled7/inputnew/image/close_white.png 561B
  9. untitled7/inputnew/image/delete_black.png 398B
  10. untitled7/inputnew/image/delete_white.png 486B
  11. untitled7/inputnew/image/enter_black.png 362B
  12. untitled7/inputnew/image/enter_white.png 399B
  13. untitled7/inputnew/image/handwriting_black.png 427B
  14. untitled7/inputnew/image/handwriting_white.png 468B
  15. untitled7/inputnew/image/mini_black.png 398B
  16. untitled7/inputnew/image/mini_white.png 426B
  17. untitled7/inputnew/image/space_black.png 217B
  18. untitled7/inputnew/image/space_white.png 165B
  19. untitled7/inputnew/image/status_ch.png 1.78KB
  20. untitled7/inputnew/image/status_en.png 1.87KB
  21. untitled7/inputnew/image/upper_black.png 390B
  22. untitled7/inputnew/image/upper_white.png 387B
  23. untitled7/inputnew/inputnew.pri 146B
  24. untitled7/inputnew/inputnew.qrc 773B
  25. untitled7/inputnew/py.db 120KB
  26. untitled7/main.cpp 605B
  27. untitled7/mainwindow.cpp 831B
  28. untitled7/mainwindow.h 409B
  29. untitled7/mainwindow.ui 2.26KB
  30. untitled7/untitled7.pro 1.04KB
  31. untitled7/untitled7.pro.user 45.66KB
  32. untitled7/untitled7.pro.user.f2bc2be 22KB
0评论
提交 加载更多评论
其他资源 grbl0.8源码移植
将grbl0.8源码移植于stm32. 学习开源运动控制器软件。
bat2exe-tool.zip BAT脚本转exe可执行文件的小工具
bat2exe-tool.zip BAT脚本转exe可执行文件的小工具 如果对你有用的话,欢迎关注我的主页:https://blog.csdn.net/szullc
Android安卓java开发组件ADT(免费)
Android安卓java开发组件ADT(免费) 导入myeclipse或者eclipse 安装即可使用
(超详细、附讲解)串口DMA.zip
串口DMA的配置和使用,实现串口接收不定长数据以及定长数据,实现双缓冲模式,提高MCU效率。句句代码都解释,配合博文看,你会觉得DMA如此的简单,串口DMA实战如此简单! 相关讲解访问博客链接:https://blog.csdn.net/weixin_44524484/article/details/106029682
PowerDesigner16.5版本包含MySQL5.0模型的DBMS文件
有的人的PowerDesigner16.5版本的DBMS文件里找不到MySQL5.0的模型,下载解压然后覆盖掉安装目录里PowerDesigner\Resource Files\DBMS就行
oracle教程
初学者不错的oracle教程
oracle教程 oracle教程 oracle教程
《1. 机器学习前置知识》配套数据集
《1. 机器学习前置知识》配套数据集,数据集目录: 1. IMDB-Movie-Data.csv 2. Sarcasm_Headlines_Dataset.json 3. starbucks_directory.csv 4. stock_day.csv 5. UBER.csv 6. UBER.h5
win11-PL23XX_Prolific_DriverInstaller_v206
解决:PL2303TA不支持WINDOWS 11及后续版本报错问题。安装完成后插入设备,在管理选择COM口,右键更新驱动,选择老版本即可。