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



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

我正在通过这个类处理按下的键。

除了重写inputMethodEvent方法之外,还必须启用Qt::WA_InputMethodEnabled属性:

#include <QtWidgets>
class Widget: public QWidget{
public:
Widget(QWidget *parent=nullptr): QWidget(parent){
setAttribute(Qt::WA_InputMethodEnabled, true);
}
protected:
void keyPressEvent(QKeyEvent *event){
qDebug() << "keyPressEvent" << event->text();
QWidget::keyPressEvent(event);
}
void inputMethodEvent(QInputMethodEvent *event){
qDebug() << "inputMethodEvent" << event->commitString();
QWidget::inputMethodEvent(event);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}

相关内容

  • 没有找到相关文章