阅读:16049回复:29

yong关于QT的情况说明

楼主#
更多 发布于:2016-01-02 16:26
有人报告说深度桌面中没法使用,赶紧去查了一下,原来用了QT5开发的桌面(深度感觉比较奇葩,桌面环境是QT和GTK混着来的,不过以后看来会转向QT),再想想LXQT桌面也是用QT5开发的,一时间压力大增,赶紧去看文档,找例子。

花了一天时间,把QT5的输入法插件坐出来了,一半的时间在迁移GTK插件的代码到QT,这个过程比我想象中容易很多,因为QT程序竟然支持GLIB主循环,这样通讯事件处理直接用就行了,不用专门写个QT的版本了(当然我找了半天,也没发现怎么把文件事件处理加入到QT主循环中的方法)。还有一半时间花在怎么编译一个QT程序上了,因为QT程序都不是标准的C++,需要一些特殊处理,而网上找到的资料基本都用了CMake和qmake之类自动给处理好了,底层怎么工作的就不清楚了。

有一些特殊的情况需要说明,QT5和QT4对输入法的插件支持接口什么的是不一样的,所以小小输入法还是没有QT4的插件支持,而这两个公用了QT_IM_MODULE环境变量来指定使用的输入法插件,所以现在是个非此即彼的关系,总有一个不能用,要用QT4程序,还是得用xim模块。
在这点上GTK好多了,GTK3和GTK2在输入法插件的源码是一模一样的,重新编译一下即可。

由于做的这个插件使用了GLIB主循环,所以要用这个插件,QT库必须编译进GLIB支持,运行的时候也不能设置QT_NO_GLIB环境变量。

据说QT插件在新版本的QT库上编译的话,不能在老版本上用,而我这个是在5.5.1版本上编译的,那么之前的QT版本应该就用不了它了。QT的平台级插件据说是和版本绑定的,我不是很清楚,但看它的头文件确实放在版本对应的目录下面,那么很可能确实是这样,所以这个插件很可能在之后的版本中也不能用,真是个悲剧的故事。因为这个问题,所以我输入法的安装脚本中,是不能集成QT5模块的支持,只能是用户需要的时候自己添加进去。还有更悲剧的,如果每个版本都得编译一个插件,那么,这就绝对不是我能发布得过来的,搞不好逼得我只好开源QT插件,然后让用户自己去编译了。
沙发#
发布于:2016-01-09 11:31
经我升级到QT 5.6.0版本,原来那个5.5.1版本的插件是可用的,情况还不错
haulm
新手上路
新手上路
板凳#
发布于:2016-06-16 07:03
能说明一下安装方法么,我复制为
/usr/lib64/qt5/plugins/platforminputcontexts/libyongplatforminputcontextplugin.so
不会工作
yong 版本为 2.3.0
haulm
新手上路
新手上路
地板#
发布于:2016-06-16 07:10
haulm
新手上路
新手上路
4楼#
发布于:2016-06-16 07:15
一直以来您的输入法都比 fcitx 要优秀,适当开源不会伤害你的作品的。
5楼#
发布于:2016-06-16 09:03
haulm:能说明一下安装方法么,我复制为
/usr/lib64/qt5/plugins/platforminputcontexts/libyongplatforminputcontextplugin.so
不会工作
yong 版本为 2.3.0
回到原帖
输入法请用最新测试版安装,并先用自带的更新功能更新一下
haulm
新手上路
新手上路
6楼#
发布于:2016-06-16 11:16
不行,已经更新,无法切换和输出中文,kf5 环境下只有 gtk 程序可以输入。
7楼#
发布于:2016-06-16 11:39
检查一下GTK_IM_MODULE和QT_IM_MODULE是否已设置为yong,输入法需要在设置好这些环境变量之后再启动。
qt模块现在只有64位版的,不支持32位的qt程序
系统上的qt版本是否在5.5以上
这个模块依赖于libxkbcommon,不知道你的系统上有没有安装它。

我会逐步开源输入法的各个组件。
haulm
新手上路
新手上路
8楼#
发布于:2016-06-20 21:40
还是不行啊,遇到 KDE5 程序就不能输出了。
haulm
新手上路
新手上路
9楼#
发布于:2016-06-20 21:50
这会又可以了。。。,我多测试几次。
上一页
游客

返回顶部