linux - QKeyEvent::text() 在 Linux 上不返回重音字母
问题描述
有谁知道为什么在 Linux 上QKeyEvent::text()
键入` + a返回一个空字符串和一个字母a而不是一个空字符串和à ?在 Windows 下,这似乎工作正常(在 Windows 和 Linux 下运行相同的应用程序)。
我正在通过此类处理按下的键。
解决方案
Qt::WA_InputMethodEnabled
除了覆盖方法之外,您还必须启用该属性inputMethodEvent
:
#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();
}
推荐阅读
- javascript - 如何在使用整数更新单元格后刷新我的表单集数据?
- javascript - 为什么 webpack 输出从 /
- c# - C# 找不到类型或命名空间名称“NUnit”
- yeoman - yeoman 没有安装在特定版本的节点和 npm 上
- java - 如何在 mac 上使用 Jib 对 Java 应用程序进行 dockerize
- mysql - 如何在nodejs中将字符串转换为blob/longblob - MySQL
- python - XML 响应的返回值
- haystack - Haystack 教程 1 - 库不竞争
- cookies - NextJS 不包括我的 .NET Core Webapi 提供的 HttpOnly Cookie
- c# - 根据 sql 中的字段标记 CheckBox