qt 弹出软键盘

醉过方知酒烈 2013-07-05 01:45:29
在支持touch的win7设备上,为什么Qt的控件不能弹出软键盘?系统自己的控件就是可以的,只要touch光标在输入框,就会弹出一个小键盘图标,点击就弹出软键盘,但是Qt的控件怎么点击也不出来小键盘图标,求解。
...全文
824 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
醉过方知酒烈 2013-09-02
  • 打赏
  • 举报
回复
引用 8 楼 linuxsmallping 的回复:
Qt里面有个小键盘的例子,一旦点击可编辑的控件就弹出软键盘
你好 ,我按这个方法写了,我只是把调用他自己软键盘的地方换成了调用windows自带的软键盘。但是我发现用了它demo的方法之后,不能输入中文了。。
醉过方知酒烈 2013-07-24
  • 打赏
  • 举报
回复
这个问题感觉自己处理的话,怎么也不是好办法。。 win7自带的控件可以判断出来是touch触发还是mousepress触发,只有touch才会弹出软键盘,说明是触摸设备,但是自己判断的话可能不需要弹出软键盘的地方也会弹出来。。
邶风 2013-07-16
  • 打赏
  • 举报
回复
判断获取焦点就要重新实现控件的。不是必须要重写控件的吧?!你用事件过滤器啊。在事件过滤器中,判断这个控件是否触发了QEvent::FocusIn事件。如果触发了 你就弹出软键盘。 事件过滤器: bool QObject::eventFilter ( QObject * watched, QEvent * event ); 重写下就行
鱼公子哟西 2013-07-13
  • 打赏
  • 举报
回复
引用 9 楼 yanbin_1985525 的回复:
[quote=引用 8 楼 linuxsmallping 的回复:] Qt里面有个小键盘的例子,一旦点击可编辑的控件就弹出软键盘
你说的这个例子叫什么啊?我去找一下。[/quote] input panel example
鱼公子哟西 2013-07-12
  • 打赏
  • 举报
回复
Qt里面有个小键盘的例子,一旦点击可编辑的控件就弹出软键盘
醉过方知酒烈 2013-07-12
  • 打赏
  • 举报
回复
引用 8 楼 linuxsmallping 的回复:
Qt里面有个小键盘的例子,一旦点击可编辑的控件就弹出软键盘
你说的这个例子叫什么啊?我去找一下。
haltwang 2013-07-10
  • 打赏
  • 举报
回复
引用 6 楼 yanbin_1985525 的回复:
[quote=引用 5 楼 cai6811376 的回复:] QProcess::startDetached("osk"); 能打开win7自带的软键盘,不知道符不符合你要求
恩,这个我也知道,主要是我的应用里边有很多可输入的地方,这样的话,我还需要每一个输入的控件获取焦点的时候,都去判断一下,再软键盘。判断获取焦点就要重新实现控件的。控件太多,太麻烦了。[/quote] 可以通过QApplication的 focusChanged ( QWidget * old, QWidget * now )信号,这样就不再麻烦了。 然后再强制转换下,判断下是不是LineEdit,TextEdit这些。 另外有一个开源的keyBoard是用Qt写的,可以用用,或者借鉴下他怎么获取输入焦点的.
醉过方知酒烈 2013-07-09
  • 打赏
  • 举报
回复
引用 5 楼 cai6811376 的回复:
QProcess::startDetached("osk"); 能打开win7自带的软键盘,不知道符不符合你要求
恩,这个我也知道,主要是我的应用里边有很多可输入的地方,这样的话,我还需要每一个输入的控件获取焦点的时候,都去判断一下,再软键盘。判断获取焦点就要重新实现控件的。控件太多,太麻烦了。
xcyl 2013-07-09
  • 打赏
  • 举报
回复
QProcess::startDetached("osk"); 能打开win7自带的软键盘,不知道符不符合你要求
醉过方知酒烈 2013-07-09
  • 打赏
  • 举报
回复
引用 3 楼 cai6811376 的回复:
yourInputWidget->setAttribute(WA_InputMethodEnabled, true); qApp->setAutoSipEnabled(true);
我试过了,还是不行啊。。 这个方法是不是在windows不行啊
醉过方知酒烈 2013-07-08
  • 打赏
  • 举报
回复
没人遇到过吗?继续等
xcyl 2013-07-08
  • 打赏
  • 举报
回复
yourInputWidget->setAttribute(WA_InputMethodEnabled, true); qApp->setAutoSipEnabled(true);

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧