From 4f72ca0c054f173f3135d537ab44abb5c34a77bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A6=83=E6=9C=AC=E5=AD=A6?= Date: Tue, 7 May 2024 11:30:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=A4=A7=E5=A4=9A?= =?UTF-8?q?=E6=95=B0=E6=8C=89=E9=92=AE=E4=B8=8D=E5=93=8D=E5=BA=94enter?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复大多数按钮不响应enter事件,仅支持DApplication应用 Log: 修复大多数按钮不响应enter事件 Bug: https://pms.uniontech.com/bug-view-253935.html Influence: 按钮响应键盘回车事件 --- src/widgets/dapplication.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/widgets/dapplication.cpp b/src/widgets/dapplication.cpp index 68747388d..1c4044da8 100644 --- a/src/widgets/dapplication.cpp +++ b/src/widgets/dapplication.cpp @@ -1539,6 +1539,22 @@ bool DApplication::notify(QObject *obj, QEvent *event) } } +// Qt 6.4 引入了 QPlatformTheme::ThemeHint::ButtonPressKeys +// 可以通过主题插件 themeHint 返回一个按键列表,按钮应该响应列表中的按键 +// see https://github.com/linuxdeepin/qt5integration/pull/20 +#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if (event->type() == QEvent::KeyPress && obj == focusWidget()) { + if (auto keyEvent = dynamic_cast(event)) { + if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter) { + if (auto btn = qobject_cast(obj)) { + Q_EMIT btn->clicked(); + return true; + } + } + } + } +#endif + if (event->type() == QEvent::ApplicationFontChange) { // ApplicationFontChange 调用 font() 是 ok 的,如果在 fontChanged 中调用在某些版本中会出现 deadlock DFontSizeManager::instance()->setFontGenericPixelSize(static_cast(DFontSizeManager::fontPixelSize(font())));