如何使QInputDialog触发虚拟键盘显示?

Ste*_*fan 5 python qt touch pyside

我正在用Python和PySide开发一个Qt应用程序.该应用程序在Ubuntu Linux上运行; 这台机器有一个触摸屏.

"onboard"虚拟键盘用于让用户输入文本.默认情况下它是隐藏的.一旦像gedit这样的应用程序中的文本字段获得焦点,它就会自动触发虚拟键盘并显示出来.

但是,在我的应用程序中,我有一个QInputDialog,它要求用户输入一些内容.在我的例子中,聚焦QInputDialog的文本字段不会触发虚拟键盘显示.我怎样才能做到这一点?

App*_*234 3

根据自述文件,板载公开了 DBUS 服务,以允许应用程序切换其可见性。

您可能想通过在 getText 调用之前和之后添加类似内容来实现此目的。例如

msg = QtDBus.QDBusMessage.createMethodCall('org.onboard.Onboard', '/org/onboard/Onboard/Keyboard','org.onboard.Onboard.Keyboard'
                'org.onboard.Onboard.Keyboard.Show')
QtDBus.QDBusConnection.sessionBus().send(msg)
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog', 
            'Enter your name:')
msg2 = QtDBus.QDBusMessage.createMethodCall('org.onboard.Onboard', '/org/onboard/Onboard/Keyboard','org.onboard.Onboard.Keyboard'
                'org.onboard.Onboard.Keyboard.Hide')
QtDBus.QDBusConnection.sessionBus().send(msg2)
Run Code Online (Sandbox Code Playgroud)

您还可以对这两个调用使用 ToggleVisible 方法。

这是特定于机载的,因为任何虚拟键盘解决方案的一般显示要么已使用现有的 ibus 或 malitt 输入法引擎集成到 QT 中,要么通过实现 QPlatformInputContext 来完成,如此处和此处所示,或者使用类似方法使用DBUS 或其他一些消息传递解决方案(TCP 套接字等),以便切换特定虚拟键盘的状态。