查看完整版本: [-- 接近完美的虚拟键盘之中文输入法 --]

QTCN开发网 -> Qt 作品展 -> 接近完美的虚拟键盘之中文输入法 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

futureq 2019-03-17 22:54

接近完美的虚拟键盘之中文输入法

谷歌Pinyin输入法引擎,全部控件使用painter绘制,参考论坛中两位大神的帖子。
声明:参考了论坛中其他人的作品。
完美连打:
[attachment=20031]
完美删除键、空格键、Enter键、翻页选词响应:
[attachment=20033]

语句记忆:
[attachment=20032]
自动识别可输入控件,无需任何特殊处理:
[attachment=20034]

按键图标等功能还不完整,过几天再更新。可能是本人自身英语水平不高的原因,谷歌那个引擎用起来比想象中的麻烦,但是效果不错,支持单词,句子的连打,跟不联网的手机输入法效果差不多了,还可以记忆用户之前输入的句子。






futureq 2019-03-17 23:25
自己顶

liudianwu 2019-03-18 08:31
帮友商再顶一下!顺便打个广告!
[attachment=20021]


futureq 2019-03-20 00:04
按键特效还差点,过几天持续更新

futureq 2019-03-24 19:10
最新更新[attachment=20046]

liudianwu 2019-03-24 20:47
futureq:最新更新[图片] (2019-03-24 19:10) 

不错,抄的越来越像了!

xdh873939316 2019-03-25 10:42
[attachment=20048]
自带的也好看,可以模仿一下。

笑颜 2019-03-25 12:56
xdh873939316:[图片]
自带的也好看,可以模仿一下。[表情]  (2019-03-25 10:42) 

自带的有BUG,不能在dialog窗口上输入,不信你试试,比如QFileDialog窗口输入,这个是QML一直没解决的问题!

liudianwu 2019-03-25 15:41
笑颜:自带的有BUG,不能在dialog窗口上输入,不信你试试,比如QFileDialog窗口输入,这个是QML一直没解决的问题! (2019-03-25 12:56) 

如果是dialog窗体,请在dialog窗体exec前增加一行代码,否则会阻塞窗体消息。
QDialog dialog;dialog.setWindowModality(Qt::WindowModal);

笑颜 2019-03-25 16:10
liudianwu:如果是dialog窗体,请在dialog窗体exec前增加一行代码,否则会阻塞窗体消息。
QDialog dialog;dialog.setWindowModality(Qt::WindowModal); (2019-03-25 15:41)

fileName = QFileDialog::getOpenFileName(this,
      tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));

这样的用法咋办呢?

官方的方法是用open替换exec:https://bugreports.qt.io/browse/QTBUG-73092?filter=-2
但是还是有上面个问题!

liudianwu 2019-03-25 20:27
笑颜:
fileName = QFileDialog::getOpenFileName(this,
      tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));
这样的用法咋办呢?
.......

这个很简单,查看getOpenFileName的源码,按照其重新写一个,在其基础上增加一行
  1. dialog.setWindowModality(Qt::WindowModal);

放在公共静态类引用就可以了。
  1. QString frmInputTool::getFileName(const QString &filter, const QString &defaultDir, const QString &fileName)
    {
        QString file;
        QFileDialog dialog;
        dialog.setFixedSize(900, 600);
        dialog.setWindowModality(Qt::WindowModal);
        dialog.setWindowTitle("保存文件");
        dialog.setLabelText(QFileDialog::Accept, "保存(&S)");
        dialog.setLabelText(QFileDialog::Reject, "取消(&C)");
        dialog.selectFile(fileName);
        dialog.setNameFilter(filter);
        dialog.setDirectory(defaultDir);

        if (dialog.exec() == 1) {
            file = dialog.selectedFiles().value(0);
            file = QFileInfo(file).suffix().isEmpty() ? "" : file;
        }

        return file;
    }



futureq 2019-03-25 20:40
liudianwu:不错,抄的越来越像了![表情] (2019-03-24 20:47) 

哈哈哈,太菜了,就抄了一下布局和谷歌的Pinyin引擎

笑颜 2019-03-25 21:16
liudianwu:这个很简单,查看getOpenFileName的源码,按照其重新写一个,在其基础上增加一行 dialog.setWindowModality(Qt::WindowModal);
放在公共静态类引用就可以了。
QString frmInputTool::getFileName(const QString &filter, const QString &defaultDir, const QString &am .. (2019-03-25 20:27)

额、、、解决办法我又不是不知道。。。我只是说有BUG 你不能让每个人都自己去想办法解决Qt自己的BUG吧

xiongchao99 2019-04-14 13:10
futureq:哈哈哈,太菜了,就抄了一下布局和谷歌的Pinyin引擎 (2019-03-25 20:40) 

谷歌拼音的新词与词频记忆,只是将其写入到内存,并未进一步修改词库文件,所以输入法实例析构后就清除失效了,大佬知道怎么将词频、新词写入词库文件吗

feilanglove6 2019-04-15 13:51
HelloWorld!!!

fengwujiutan 2019-11-11 16:33
能开源吗?

fjydpf 2019-11-29 10:58
可以在浏览器中输入吗?


查看完整版本: [-- 接近完美的虚拟键盘之中文输入法 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled