手册
1. API介绍
1.1  DWInputMethodCreate
1.2  DWInputMethodRelease
1.3  DWInputMethodOption
1.4  DWInputMethodShow
1.5  DWInputMethodHide
1.6  DWInputMethodReset
1.7  DWInputMethodShowing
1.8  DWInputMethodGetMode
1.9  DWInputMethodGetPos
1.10  DWInputMethodGetSize
1.11  DWInputMethodCommitFunc
1.12. 二次封装API
1.12.1  DWIM_SetPos
1.12.2  DWIM_SetSize
1.12.3  DWIM_SetMode
1.12.4  DWIM_SetT9Symb
1.12.5  DWIM_SetCss
1.12.6  DWIM_SetMoveable
1.12.7  DWIM_SetBool
1.12.8  DWIM_SetInt
1.12.9  DWIM_SetString
1.12.10  DWIM_SetColor
2. 自动弹出Hook
2.1  Open
2.2  Start
2.3  Stop
2.4  SetKeyboard
2.5  SetAutoHide
2.6  SetAutoMode
2.7  AddAutoMode
2.8  SetAutoPos
2.9  AddAutoShow
2.10  ExcludeAutoShow
2.11  ExcludeAutoHide
2.12  Close
3  例子代码

例子代码

283
文子
2023-11-02 11:47:59

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