查看完整版本: [-- Qt中QLineEdit控件屏蔽输入法 --]

QTCN开发网 -> Qt中文处理 -> Qt中QLineEdit控件屏蔽输入法 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

yzfree 2014-11-19 10:19

Qt中QLineEdit控件屏蔽输入法

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

dbzhang800 2014-11-19 13:43


你试试 setInputMethodHints() 有没有用

yzfree 2014-11-19 14:40
dbzhang800:你试试 setInputMethodHints() 有没有用 (2014-11-19 13:43) 

没有用,这个试过了

yzfree 2014-11-19 14:41
也有的说用ImmAssociateContext函数做,但是我也试过,同样无法屏蔽,不知道是不是使用方式的问题
HIMC _IMC;
HWND hWnd = (HWND)this->winId();
_IMC = ImmGetContext(hWnd);
if (hWnd && IsWindow(hWnd))
{
    ImmAssociateContext(hWnd, NULL);
    ImmReleaseContext(hWnd,_IMC);
}

yzfree 2014-11-19 14:48
dbzhang800:你试试 setInputMethodHints() 有没有用 (2014-11-19 13:43) 

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

yzfree 2014-11-20 09:28
我重开新工程试了试,ImmAssociateContext可以用,虽然能切换输入法,但是只能输入字母,不知道原来的工程为什么不能用

yzfree 2014-11-20 10:41
还是没有找到原工程中ImmAssociateContext函数失效的原因,没有人有过类似的问题吗?麻烦大神指点下啊

yzfree 2014-11-20 11:57
dbzhang800:你试试 setInputMethodHints() 有没有用 (2014-11-19 13:43) 

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

彩阳 2014-11-20 14:07
我已经提了bug。这个bug在这里。可能新的版本会修复这个问题吧。
https://bugreports.qt-project.org/browse/QTBUG-40691

yzfree 2014-11-20 15:05
彩阳:我已经提了bug。这个bug在这里。可能新的版本会修复这个问题吧。
https://bugreports.qt-project.org/browse/QTBUG-40691 (2014-11-20 14:07) 

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

liyingzai 2015-04-24 16:53
lz解决了吗 我的用ImmAssociateContext这个也没效果

zhangtao 2017-06-19 15:16
按照帖子里的方法试了一大圈, 最终发现还是楼主说的方法是对的, setAttribute(Qt::WA_InputMethodEnabled, false); 只不过这个属性要设置为false, Qt4我没有试过


查看完整版本: [-- Qt中QLineEdit控件屏蔽输入法 --] [-- top --]



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