qt virtualKeyboard虚拟键盘报错的一种解决办法

在使用qt的虚拟键盘(InputPanel模式,QML界面)时,在某些TextField输入时会出现下面这样的错误:

qrc:/QtQuick/VirtualKeyboard/content/InputPanel.qml:125:5: QML Keyboard: Binding loop detected for property "active"

出现这个错误后,点击键盘的“收起”按钮时,是收不了这个键盘的。必须再点一下TextField才可以。
qt virtualKeyboard虚拟键盘报错的一种解决办法_第1张图片
一开始按照提示,下载了VirtualKeyboard的源码,定位到上面语句所指出的问题,但是找不到什么有效信息。然后逐行对比不同窗体(一样基类的窗体,有些出现,有些不出现)的源代码,经过测试发现这个情况是与输入框的层次有关(可能和其他原因也有关)。如下图所示:
qt virtualKeyboard虚拟键盘报错的一种解决办法_第2张图片
所以,目前的一种解决方法是:可以尝试在输入框外面套一层Item或者Rectangle,理论上应该可以解决问题。这个应该算是Qt的bug。

你可能感兴趣的:(Qt相关,qt5,qml)