手动控制弹出例子(参考例子DemoEdit):
void MainWindow::Init()
{
// 创建输入法,全局只创建一次即可
g_IM = DWInputMethodCreate();
// 设置默认模式和大小
DWIM_SetMode(g_IM, "py26");
DWIM_SetSize(g_IM, 720, 280);
}
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::RequestSoftwareInputPanel ||
event->type() == QEvent::MouseButtonPress ||
event->type() == QEvent::FocusIn)
{
if (IsEdit(obj)) {
DWInputMethodShow(im, NULL);
}
}
return QMainWindow::eventFilter(obj, event);
}
自动弹出例子(参考例子DemoHook):
void MainWindow::Init()
{
// 创建输入法,全局只创建一次即可
g_IM = DWInputMethodCreate();
// 设置默认模式和大小
DWIM_SetMode(g_IM, "py26");
DWIM_SetSize(g_IM, 720, 280);
// 创建自动弹出
mHandler = AutoPopupHandler_Open();
AutoPopupHandler_SetAutoHide(mHandler, true); // 点在输入框外,自动隐藏
AutoPopupHandler_SetAutoPos(mHandler, 2, 0, 30); // 设置为2即跟随鼠标,无X偏移,Y偏移30即,相对于输入框向下移30个像素。
AutoPopupHandler_AddAutoMode(mHandler, "editName", "py26.lay"); // 人名的输入框,自动切换到全键盘拼音
AutoPopupHandler_AddAutoMode(mHandler, "editPhone", "phone.lay"); // 电话输入框,自动切换到电话键盘
AutoPopupHandler_SetAutoMode(mHandler, true); // 自动切换输入模式
AutoPopupHandler_ExcludeAutoShow(mHandler, ui->dateEdit); // 时间控件不弹出键盘
AutoPopupHandler_SetKeyboard(mHandler, g_IM); // 设置键盘
AutoPopupHandler_Start(mHandler, this); // 开始
}