系统

  银河麒麟

前提条件:

  已经安装了 fcitx 插件,因为QTcreator本身不支持中文输入,需要插件支持;

场景1:

  一台计算机;使用普通用户(例如:user01)登录并打包一个可以执行的QT程序(我使用的是QT 5.6.3),程序中至少有一个文本输入框用于测试,其它UI组件随意;打开user01的终端,使用 ./ 执行打包好的程序(例如:testProgram),可以正常输入中文,此时在打开一个user01终端,并且使用 sudo su 切换为root用户,然后在使用 ./ 来执行testProgram,会发现文本输入框输入不了中文(已经切换到了中文输入);

场景2:

  两台计算机;A机是场景1中的计算机;在B机上使用普通用户user02登录,打开一个终端,使用 ssh user01@x.x.x.x 连接上A机,进入到testProgram目录,使用 ./ 执行testProgram,也会出现文本框输入不了中文的情况;

 

解决方案(不是唯一):

在场景1的情况下

引起该问题的主要原因是环境变量的改变引起的,主要有三个环境变量,使用 env | grep QT  和 env | grep XM 可以查看:

① QT4_IM_MODULE = fcitx 

QT_IM_MODULE = fcitx 

③ XMODIFIERS = @im = fcitx 

当从user01切换到root时,环境变量①②的值会从 fcitx 变为 xim,此现象就是导致无法输入中文的主要原因;可以创建一个 test.sh 脚本,内容为:

 

#$!bin/bash
export DISPLAY = :0  #用来防止出现 cloud not connect to display 的错误;

export QT_IM_MODULE = fcitx  # 经过测试,只用修改这个环境变量即可;

#fcitx start   #重启fcitx插件,先注释掉,若此脚本不行,在重启fcitx试试;

./path/testProgram  # path是有testProgram可执行文件的路径;

 

后续使用 test.sh 脚本执行那个QT程序即可;

场景2的问题也是只需要执行 test.sh 脚本即可。

 

原文地址:http://www.cnblogs.com/rookieB/p/16901863.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性