前段时间遇到QQuickWidget嵌入的qml中,文本输入框无法输入中文的问题。在同事的帮助下,解决此问题。方案如下:
1、QQuickWidget中创建 焦点变化 信号槽连接:
connect(quickWindow(), &QQuickWindow::activeFocusItemChanged, this, &MainQuickWidget::onActiveFocusItemChanged);
2、处理信号槽函数:
QQuickItem *pFocusItem = quickWindow()->activeFocusItem();
if (pFocusItem && pFocusItem->inherits("QQuickTextInput"))
{
disconnect(quickWindow(), &QQuickWindow::activeFocusItemChanged, this, &MainQuickWidget::onActiveFocusItemChanged);
clearFocus();
pFocusItem->forceActiveFocus();
}
这样处理之后,文本框便可以正常输入中文了。