Qt 软键盘(虚拟键盘)嵌入式使用【含demo链接,不需要积分即可下载】

您所在的位置:网站首页 计算器上各种按键功能图标 Qt 软键盘(虚拟键盘)嵌入式使用【含demo链接,不需要积分即可下载】

Qt 软键盘(虚拟键盘)嵌入式使用【含demo链接,不需要积分即可下载】

2023-06-04 12:04| 来源: 网络整理| 查看: 265

在使用开发嵌入式产品中,必不可少的就是与用户交互的软键盘,废话不多说,直接上代码

软键盘在Qt工程中已经封装为子工程,可以直接使用,如下 在这里插入图片描述 main.cpp

#include "mainwindow.h" #include int main(int argc, char *argv[]) { #ifdef Q_OS_WIN32 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);//高dpi开启 QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);//高分辨率图标 //QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);//缩放不取整(150%缩放不用取整到200%缩放) #endif qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));//虚拟键盘 QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }

inputnew.h(包含详解)

#ifndef FRMINPUTNEW_H #define FRMINPUTNEW_H #include #include #if (QT_VERSION > QT_VERSION_CHECK(5,0,0)) #include #endif namespace Ui { class frmInputNew; } class frmInputNew : public QWidget { Q_OBJECT public: //单例模式,保证一个程序只存在一个输入法实例对象 static frmInputNew *Instance(); explicit frmInputNew(QWidget *parent = 0); ~frmInputNew(); protected: //鼠标拖动事件 void mouseMoveEvent(QMouseEvent *); //鼠标按下事件 void mousePressEvent(QMouseEvent *); //鼠标松开事件 void mouseReleaseEvent(QMouseEvent *); //事件过滤器,处理鼠标在汉字标签处单击操作 bool eventFilter(QObject *obj, QEvent *event); private: Ui::frmInputNew *ui; static frmInputNew *self; //窗体宽度 int frmWidth; //窗体高度 int frmHeight; //桌面宽度 int deskWidth; //桌面高度 int deskHeight; //数据库路径 QString dbPath; //鼠标拖动自定义标题栏时的坐标 QPoint mousePoint; //鼠标是否按下 bool mousePressed; //当前大小写状态 bool upper; //是否长按退格键 bool isPress; //长按按钮 QPushButton *btnPress; //退格键定时器 QTimer *timerPress; //当前焦点的对象 QWidget *currentWidget; //当前焦点的单行文本框 QLineEdit *currentLineEdit; //当前焦点的多行文本框 QTextEdit *currentTextEdit; //当前焦点的富文本框 QPlainTextEdit *currentPlain; //当前焦点的文本浏览框 QTextBrowser *currentBrowser; //当前焦点控件的类型 QString currentEditType; //显示当前中英文状态 QLabel *labStatus; //是否迷你模式 bool mini; //当前输入法面板位置类型 QString position; //当前输入法类型 QString inputType; //汉字标签数组 QListlabCh; //所有拼音链表 QStringList allPY; //当前拼音链表 QStringList currentPY; //当前拼音索引 int currentPYIndex; //当前拼音数量 int currentPYCount; private slots: //初始化属性 void initProperty(); //初始化窗体数据 void initForm(); //初始化数据库 void initDb(); //校验当前长按的按钮 bool checkPress(); //定时器处理退格键 void reClicked(); //输入法面板按键处理 void btnClicked(); //焦点改变事件槽函数处理 void focusChanged(QWidget *oldWidget, QWidget *nowWidget); //查询汉字 void selectChinese(); //显示查询到的汉字 void showChinese(); //计算当前汉字长度自动隐藏标签 void checkChinese(); //插入值到当前焦点控件 void insertValue(const QString &value); //删除当前焦点控件的一个字符 void deleteValue(); //设置当前汉字 void setChinese(int index); //清空当前汉字信息 void clearChinese(); public Q_SLOTS: //设置字体名称及大小,包括按钮的字体大小和汉字部分的字体大小 void setFontInfo(const QString &fontName, int btnFontSize, int labFontSize); //设置数据库路径 void setDbPath(const QString &dbPath); //设置窗体尺寸 void setFrmSize(int frmWidth, int frmHeight); //设置图标尺寸 void setIcoSize(int icoWidth, int icoHeight); //设置按钮之间的空隙间隔 void setSpacing(int spacing); //设置顶部汉字区域高度 void setTopHeight(int topHeight); //设置是否启用迷你模式,外接物理键盘时使用 void setMini(bool mini); //设置输入法弹出位置 void setPosition(const QString &position); //设置输入法颜色样式 void setStyle(const QString &style); //改变输入法面板样式 void setColor(const QString &mainBackgroundColor, const QString &mainTextColor, const QString &btnBackgroundColor, const QString &btnHoveColor, const QString &btnHoveTextColor, const QString &labHoveColor, const QString &labHoveTextColor); //设置当前输入法类型 void setInputType(const QString &inputType); //改变字母大小写 void setUpper(bool isUpper); //按钮改变成特殊字符 void showChar(bool isChar); //显示输入法面板 void showPanel(); }; #endif // FRMINPUTNEW_H

demo结果 在这里插入图片描述 在这里插入图片描述 demo链接: https://download.csdn.net/download/weixin_48268336/87842723

要是可以的话求个一件三联噢。关注点赞评论~一起交流 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3