qt 拼音输入法中文候选框的实现方法

tudou524342451 2020-02-20 03:49:21
基于qt4.8 的中英文键盘实现,现在中文的基本实现了,但是界面上的汉字候选框固定显示8个按钮(按钮大小的固定)来显示8个匹配的词,有翻页功能,由于键盘大小固定不能修改,都是单个汉字可以正常显示,如果为多个汉字的话,8个按钮显示不全。现在考虑用其他方法如何实现汉字候选框呢?类似现在搜狗,谷歌等输入法的汉字候选框那种。在网上找了自绘控件的代码,看了以后自己试了但是想不出来怎么实现前后翻页,还有继承QLabe自己写控件,也想不出来应该怎样动态放入几个qlable,求大神帮忙看下,谢谢啦。
...全文
344 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tudou524342451 2020-02-26
  • 打赏
  • 举报
回复
谢谢大家帮忙,setparent以后就可以显示了,具体细节还需要再调试,非常感谢。
  • 打赏
  • 举报
回复
代码最终会通过接口在屏幕上绘制出画面,ui文件还是代码动态生成都是一样的,没有必要非得想办法把代码绘制的东西插入到ui文件里去。 比如你ui文件创建好了基本的控件,如背景板,拼音区域,汉字候选区域,这就可以了,接下来可以通过键盘事件的时候动态生成字母的label,new的时候把parent设置到ui文件的拼音区域的控件就行了,汉字同理。
tudou524342451 2020-02-21
  • 打赏
  • 举报
回复
引用 3 楼 这是一个正经昵称 的回复:
把QLabel指针放List或者Vector里管理。另外可以适当动态调整候选区的长度
谢谢你的回答,我先创建个widget然后写接口放入多少个qlable并显示出来,再增加点击事件,最后把这个widget插入现存的ui文件里(这地方我不太清楚应该怎么做,您了解这部分吗?),是这个意思吗?现在这个项目的ui界面我只能去修改,就是把汉字候选框那里的8个按钮给换掉,用来显示匹配到的汉字或词组。
  • 打赏
  • 举报
回复
把QLabel指针放List或者Vector里管理。另外可以适当动态调整候选区的长度
Italink 2020-02-21
  • 打赏
  • 举报
回复
ui不熟,手写代码用的多,自己继承过来的控件,在界面对象中创建控件对象,setParent就放进去了,如果窗口有布局(hbox,vbox。。)等,调用布局的addWidget放进去
tudou524342451 2020-02-21
  • 打赏
  • 举报
回复
引用 5 楼 Italink 的回复:
QFontMetrics可以获取所用字体显示的字符串数据(宽、高),要么你固定显示8个候选词,根据所有候选词的宽度调整你键盘的宽度,要么,你按顺序获取候选词的宽度,看能放多少个候选词进去
谢谢,按照您的回答我可以确定每页显示几个了,我自己自绘了一个控件,但是不知道怎么插入到现有的ui界面上,我刚接触这方面的不是很了解
Italink 2020-02-21
  • 打赏
  • 举报
回复
QFontMetrics可以获取所用字体显示的字符串数据(宽、高),要么你固定显示8个候选词,根据所有候选词的宽度调整你键盘的宽度,要么,你按顺序获取候选词的宽度,看能放多少个候选词进去
Italink 2020-02-20
  • 打赏
  • 举报
回复
你好,没太看懂呢要怎么做,我对Qt5的自绘控件用的还行,请加一下QQ:657959053
tudou524342451 2020-02-20
  • 打赏
  • 举报
回复
麻烦大家帮看下,谢谢啦

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧