QKeyEvent::text() 在 Linux 上不 return 重音字母

QKeyEvent::text() doesn't return accent letter on Linux

有谁知道为什么 QKeyEvent::text() 用于输入 ` + a returns 一个 空字符串 和一个字母a 而不是 一个空 字符串和 Linux 上的 à?在 Windows 下这似乎工作正常(在 Windows 和 Linux 下相同的应用程序 运行)。

我正在通过这个 class 处理按键。

除了覆盖 inputMethodEvent 方法外,您还必须启用 Qt::WA_InputMethodEnabled 属性:

#include <QtWidgets>

class Widget: public QWidget{
public:
    Widget(QWidget *parent=nullptr): QWidget(parent){
        <b>setAttribute(Qt::WA_InputMethodEnabled, true);</b>
    }
protected:
    void keyPressEvent(QKeyEvent *event){
        qDebug() << "keyPressEvent" << event->text();
        QWidget::keyPressEvent(event);
    }
    <b>void inputMethodEvent(QInputMethodEvent *event){
        qDebug() << "inputMethodEvent" << event->commitString();
        QWidget::inputMethodEvent(event);
    }</b>
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}