当前位置:编程学习 > wap >>

qt 弹出软键盘

在支持touch的win7设备上,为什么Qt的控件不能弹出软键盘?系统自己的控件就是可以的,只要touch光标在输入框,就会弹出一个小键盘图标,点击就弹出软键盘,但是Qt的控件怎么点击也不出来小键盘图标,求解。 qt 软键盘 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 没人遇到过吗?继续等 --------------------编程问答-------------------- yourInputWidget->setAttribute(WA_InputMethodEnabled, true);
qApp->setAutoSipEnabled(true); --------------------编程问答--------------------
引用 3 楼 cai6811376 的回复:
yourInputWidget->setAttribute(WA_InputMethodEnabled, true);
qApp->setAutoSipEnabled(true);


我试过了,还是不行啊。。
这个方法是不是在windows不行啊 --------------------编程问答-------------------- QProcess::startDetached("osk");
能打开win7自带的软键盘,不知道符不符合你要求 --------------------编程问答--------------------
引用 5 楼 cai6811376 的回复:
QProcess::startDetached("osk");
能打开win7自带的软键盘,不知道符不符合你要求


恩,这个我也知道,主要是我的应用里边有很多可输入的地方,这样的话,我还需要每一个输入的控件获取焦点的时候,都去判断一下,再软键盘。判断获取焦点就要重新实现控件的。控件太多,太麻烦了。 --------------------编程问答--------------------
引用 6 楼 yanbin_1985525 的回复:
Quote: 引用 5 楼 cai6811376 的回复:

QProcess::startDetached("osk");
能打开win7自带的软键盘,不知道符不符合你要求


恩,这个我也知道,主要是我的应用里边有很多可输入的地方,这样的话,我还需要每一个输入的控件获取焦点的时候,都去判断一下,再软键盘。判断获取焦点就要重新实现控件的。控件太多,太麻烦了。



可以通过QApplication的  focusChanged ( QWidget * old, QWidget * now )信号,这样就不再麻烦了。
然后再强制转换下,判断下是不是LineEdit,TextEdit这些。

另外有一个开源的keyBoard是用Qt写的,可以用用,或者借鉴下他怎么获取输入焦点的. --------------------编程问答-------------------- Qt里面有个小键盘的例子,一旦点击可编辑的控件就弹出软键盘 --------------------编程问答--------------------
引用 8 楼 linuxsmallping 的回复:
Qt里面有个小键盘的例子,一旦点击可编辑的控件就弹出软键盘


你说的这个例子叫什么啊?我去找一下。 --------------------编程问答--------------------
引用 9 楼 yanbin_1985525 的回复:
Quote: 引用 8 楼 linuxsmallping 的回复:

Qt里面有个小键盘的例子,一旦点击可编辑的控件就弹出软键盘


你说的这个例子叫什么啊?我去找一下。

input panel example --------------------编程问答-------------------- 判断获取焦点就要重新实现控件的。不是必须要重写控件的吧?!你用事件过滤器啊。在事件过滤器中,判断这个控件是否触发了QEvent::FocusIn事件。如果触发了 你就弹出软键盘。

事件过滤器:
bool QObject::eventFilter ( QObject * watched, QEvent * event );
重写下就行 --------------------编程问答-------------------- 这个问题感觉自己处理的话,怎么也不是好办法。。
win7自带的控件可以判断出来是touch触发还是mousepress触发,只有touch才会弹出软键盘,说明是触摸设备,但是自己判断的话可能不需要弹出软键盘的地方也会弹出来。。 --------------------编程问答--------------------
引用 8 楼 linuxsmallping 的回复:
Qt里面有个小键盘的例子,一旦点击可编辑的控件就弹出软键盘

你好 ,我按这个方法写了,我只是把调用他自己软键盘的地方换成了调用windows自带的软键盘。但是我发现用了它demo的方法之后,不能输入中文了。。
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,