手动控制弹出例子(参考例子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); // 开始 }