You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QtVirtualKeyboard仅在主窗口生效,附加窗口无法输入问题求助

解决方案建议
  • 检查模态窗口输入控件的焦点策略
    在SecondWindow的初始化方法中,给文本输入控件添加明确的焦点策略,确保它能正确捕获输入焦点:

    def __init__(self):
        super(SecondWindow, self).__init__()
        uic.loadUi('second-ui-file.ui', self)
        self.setWindowModality(Qt.ApplicationModal)
        # 替换为你UI中实际的输入框对象名
        self.lineEdit.setFocusPolicy(QtCore.Qt.StrongFocus)
    
  • 临时禁用handleVisibleChanged函数测试
    注释掉启动代码中visibleChanged信号的连接,测试虚拟键盘在模态窗口是否能正常输入:

    # QtGui.QGuiApplication.inputMethod().visibleChanged.connect(handleVisibleChanged)
    

    如果恢复正常,说明该函数中的窗口遮罩逻辑干扰了虚拟键盘的事件传递。可以修改该函数,确保模态窗口弹出时不对虚拟键盘做遮罩处理,或者调整遮罩区域的计算逻辑。

  • 手动关联输入方法到模态窗口控件
    在SecondWindow中重写showEvent方法,手动将输入方法的焦点对象绑定到文本输入控件:

    def showEvent(self, event):
        super().showEvent(event)
        self.lineEdit.setFocus()
        QtGui.QGuiApplication.inputMethod().setFocusObject(self.lineEdit)
    
  • 确认环境变量加载时机
    确保QT_IM_MODULE环境变量在创建QApplication实例前就完成设置,避免加载顺序问题:

    if __name__ == '__main__':
        os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"
        # 先设置环境变量再初始化应用
        app = QtWidgets.QApplication(sys.argv)
        # ... 后续代码
    

内容的提问来源于stack exchange,提问作者blue14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:48:32