单击 QSpinBox 时未调用 Windows 11 集成虚拟键盘

问题描述 投票:0回答:1

我正在创建一个 Qt Widgets 应用程序并将其部署在 Windows 11 平板电脑上。

目前,当我单击 QLineEdit 时,会出现 Windows 11 集成虚拟键盘,我可以编辑文本。但是,当它是 QSpinBox 时,键盘不会出现。

我的应用程序必须处于全屏状态,并且不允许访问任务栏中的虚拟键盘快捷键:

virtual keyboard shortcut

我已经尝试过:

  • QProxyStyle 到 QSpinBox

  • 重新实现一些 QEvent 功能以强制使用

    QEvent e(QEvent::RequestSoftwareInputPanel);

    进行调用
    bool event(QEvent *event) override
    {
        if (QEvent::InputMethodQuery == event->type())
        {
            QEvent e(QEvent::RequestSoftwareInputPanel);
            return QApplication::sendEvent(qApp, &e);
        }
        return QSpinBox::event(event);
    }
    
  • Q输入法

    setInputMethodHints(Qt::ImhDigitsOnly);
    
  • 阅读QLineEdit源代码。

这是我实现此功能的演示:

Clicking on QLineEdit

点击QLineEdit调用虚拟键盘:

Clicking on QSPinBox

单击 QSpinbox 不会调用任何内容。

Qt版本是6.5.0。

qt windows-11 qlineedit virtual-keyboard qspinbox
1个回答
0
投票

在我看来,这是一个 Qt 错误。通过官方 Qt Bug Report 系统报告可能是合适的。

作为解决方法,我会尝试以下方法:

void focusInEvent(QFocusEvent *event) override
{
    QSpinBox::focusInEvent(event);
    QGuiApplication::instance()->inputMethod()->show();
}

请注意,我尚未测试此方法,因为我手头没有 Windows 11 平板电脑。

© www.soinside.com 2019 - 2024. All rights reserved.