• 17414阅读
  • 11回复

[提问]Qt中QLineEdit控件屏蔽输入法 [复制链接]

上一主题 下一主题
离线yzfree
 

只看楼主 倒序阅读 楼主  发表于: 2014-11-19
请问Qt中怎么实现,像QQ等一些密码输入框,一旦获得焦点就自动屏蔽输入法,我看了帖子,说是用setAttribute(Qt::WA_InputMethodEnabled) 来实现,但是我试过没有用,也有说屏蔽掉切换输入法的组合键,但是这个比较麻烦点,所以我想问问是否有比较简单点的方法来屏蔽输入法呢?
离线dbzhang800

只看该作者 1楼 发表于: 2014-11-19


你试试 setInputMethodHints() 有没有用
离线yzfree

只看该作者 2楼 发表于: 2014-11-19
回 dbzhang800 的帖子
dbzhang800:你试试 setInputMethodHints() 有没有用 (2014-11-19 13:43) 

没有用,这个试过了
离线yzfree

只看该作者 3楼 发表于: 2014-11-19
也有的说用ImmAssociateContext函数做,但是我也试过,同样无法屏蔽,不知道是不是使用方式的问题
HIMC _IMC;
HWND hWnd = (HWND)this->winId();
_IMC = ImmGetContext(hWnd);
if (hWnd && IsWindow(hWnd))
{
    ImmAssociateContext(hWnd, NULL);
    ImmReleaseContext(hWnd,_IMC);
}
离线yzfree

只看该作者 4楼 发表于: 2014-11-19
回 dbzhang800 的帖子
dbzhang800:你试试 setInputMethodHints() 有没有用 (2014-11-19 13:43) 

难道是我的使用方法有问题?能给个例子吗?
离线yzfree

只看该作者 5楼 发表于: 2014-11-20
我重开新工程试了试,ImmAssociateContext可以用,虽然能切换输入法,但是只能输入字母,不知道原来的工程为什么不能用
离线yzfree

只看该作者 6楼 发表于: 2014-11-20
还是没有找到原工程中ImmAssociateContext函数失效的原因,没有人有过类似的问题吗?麻烦大神指点下啊
离线yzfree

只看该作者 7楼 发表于: 2014-11-20
回 dbzhang800 的帖子
dbzhang800:你试试 setInputMethodHints() 有没有用 (2014-11-19 13:43) 

想起来了,不是没有用,而使这个函数根本不存在
'setInputMethodHints' : is not a member of 'QLineEdit'
这是怎么回事?
离线彩阳

只看该作者 8楼 发表于: 2014-11-20
我已经提了bug。这个bug在这里。可能新的版本会修复这个问题吧。
https://bugreports.qt-project.org/browse/QTBUG-40691
上海Qt开发联盟,热忱地欢迎你的加入!
离线yzfree

只看该作者 9楼 发表于: 2014-11-20
回 彩阳 的帖子
彩阳:我已经提了bug。这个bug在这里。可能新的版本会修复这个问题吧。
https://bugreports.qt-project.org/browse/QTBUG-40691 (2014-11-20 14:07) 

哦,好吧,那就没办法了,谢谢啦,那有其他的办法去屏蔽输入法吗?我用immassociatecontext函数在新工程中试了试,真的把输入法给屏蔽掉了,但是把同样的代码放到原工程中就失效了,请问你有遇到类似的情况吗?我的qt是4.4.3的
离线liyingzai

只看该作者 10楼 发表于: 2015-04-24
lz解决了吗 我的用ImmAssociateContext这个也没效果
离线zhangtao

只看该作者 11楼 发表于: 2017-06-19
按照帖子里的方法试了一大圈, 最终发现还是楼主说的方法是对的, setAttribute(Qt::WA_InputMethodEnabled, false); 只不过这个属性要设置为false, Qt4我没有试过
快速回复
限100 字节
 
上一个 下一个