我创建了一个简单的Qt 5.3 GUI应用程序,它有两个小部件- QWebView和QLineEdit。我默认URL是google.com。但在没有键盘的Windows 8.1平板电脑上,当你触摸Google.com上的搜索框或行编辑工具时,触摸键盘都不会显示出来。考虑到微软以其无限的智慧,没有提供一个简单的API来显示触摸键盘,如何解决这个问题?我在这个问题上做了很多搜索,结果到处都是,从它已经被修复到它不能做。还有人看到了吗?还有别的办法吗?
您可以手动打开触摸键盘。查看我的答案中的代码示例https://stackoverflow.com/a/40921638/332528
在我的QML应用程序中,我使用这个来打开Windows键盘(我使用Textfield的信号focusChanged来打开/关闭键盘,我简化了下面的代码,删除了"如果单击相同的Textfield和其他东西"的条件,这取决于我想如何处理键盘):
#include <shellapi.h>
#include <Windows.h>
void openKeyboard()
{
HANDLE hWnd = FindWindow("OSKMainClass", NULL);
if (!hWnd) //if not open yet
{
void *OldValue;
Wow64DisableWow64FsRedirection(&OldValue);
ShellExecute(NULL, "open", "C:\Program Files\Common Files\microsoft shared\ink\tabtip.exe", NULL, NULL, SW_SHOWNORMAL); //or "C:pathTo\osk.exe"
Wow64RevertWow64FsRedirection(OldValue);
}
}
void closeKeyboard()
{
if (mKeyboardOpenRequestsNumber == 0)
{
HANDLE hWnd = FindWindow("IPTip_Main_Window", NULL); //or "OSKMainClass" if osk.exe is used.
if (hWnd) //if keyboard window is found
PostMessage((HWND)hWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
}
}