Qt全屏窗口隐藏Win8/10触摸键盘

Posted

技术标签:

【中文标题】Qt全屏窗口隐藏Win8/10触摸键盘【英文标题】:Qt Fullscreen Window hiding Win8/10 touch keyboard 【发布时间】:2016-12-14 14:25:42 【问题描述】:

我目前正在尝试将 Windows 触摸键盘 (TabTip.exe) 保留在 全屏 Qt QML 应用程序上。

不幸的是,在显示(并强制它在顶部)之后,它又被关闭了。

不管我是在启动应用程序之前启动键盘还是在全屏运行应用程序时启动键盘,Qt 获得焦点后,键盘都在后面。

任何想法这可能导致什么?这是 Qt 还是 Windows 问题?

【问题讨论】:

键盘需要一直打开吗?如果没有,您可以在需要时启动键盘,例如:***.com/questions/20972875/… @DuKes0mE 这样做甚至不会显示键盘,它会在全屏窗口后面弹出。我必须使用 Win32 API 手动将窗口置于顶部。不过,它只会一直保持到用户再次聚焦 Qt 窗口。 @Leandros 嗨,您找到解决问题的方法了吗?我面临同样的问题。我可以在非全屏应用程序中显示键盘 osk.exe,甚至最大化,并将焦点保持在 TextEdit 元素上,但是当我使用全屏应用程序时,键盘会留在我的窗口后面。 @SteveTJS 不,抱歉。我从来没有真正想出一个解决方案。 @Leandros 好的,对我来说太糟糕了。我会继续研究。 【参考方案1】:

我找到了一种将 Windows 键盘保持在 QML“全屏”应用程序上方的方法。我注意到在非全屏应用程序中,键盘出现在我的 QML 应用程序上方。所以这个想法是模拟一个全屏应用程序,使窗口应用程序接近屏幕的大小。一些代码会更好:

ApplicationWindow 
  id: mainWindow

  x: 0
  y: 0
  width: Screen.width
  height: Screen.height + 1 //+1 because does not work if the window size is equal to screen resolution. In some way, it considers it's a real fullscreen application and the keyboard stays behind.

  flags: Qt.FramelessWindowHint | Qt.Window //first flag to remove top right buttons such as close button, second flag to keep the application thumbnail in the Windows taskbar to close it if necessary.

  visible: true
  ...

有了它,我可以在文本字段上单击打开窗口键盘,关闭它,重新打开它,......所有我想要的!

【讨论】:

以上是关于Qt全屏窗口隐藏Win8/10触摸键盘的主要内容,如果未能解决你的问题,请参考以下文章

WIN7系统触摸屏一体机,点击输入框自动弹出虚拟键盘!

swift Swift - 用户触摸屏幕时隐藏键盘

Qt 中简单的无键盘触摸屏小部件

触摸另一个控件(如按钮)Swift 2.0时如何隐藏键盘

如何在iOS Obj-C中隐藏键盘触摸UITableView

单击或触摸另一个视图时清除EditText焦点并隐藏键盘