diff --git a/src/controls/tabbar.cpp b/src/controls/tabbar.cpp index e3982396..1cd425ba 100644 --- a/src/controls/tabbar.cpp +++ b/src/controls/tabbar.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2017 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2017 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -59,6 +59,10 @@ Tabbar::Tabbar(QWidget *parent) installEventFilter(this); +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) + qApp->installEventFilter(this); +#endif + setMovable(true); setTabsClosable(true); setVisibleAddButton(true); @@ -606,7 +610,12 @@ void Tabbar::handleDragActionChanged(Qt::DropAction action) bool Tabbar::eventFilter(QObject *, QEvent *event) { - qDebug() << "Enter eventFilter"; +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) + if (event->type() == QEvent::ApplicationFontChange) { + setFont(qApp->font()); + return false; + } +#endif if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *mouseEvent = static_cast(event); diff --git a/src/widgets/bottombar.cpp b/src/widgets/bottombar.cpp index 07514307..b6b29193 100644 --- a/src/widgets/bottombar.cpp +++ b/src/widgets/bottombar.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2017 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2017 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -56,6 +56,10 @@ BottomBar::BottomBar(QWidget *parent) DFontSizeManager::instance()->bind(m_scaleLabel, DFontSizeManager::T9); DFontSizeManager::instance()->bind(m_progressLabel, DFontSizeManager::T9); +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) + qApp->installEventFilter(this); +#endif + initFormatMenu(); QHBoxLayout *layout = new QHBoxLayout(this); @@ -281,6 +285,22 @@ DDropdownMenu *BottomBar::getHighlightMenu() return m_pHighlightMenu; } +bool BottomBar::eventFilter(QObject *watched, QEvent *event) +{ +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) + if (event->type() == QEvent::ApplicationFontChange) { + QFont font = qApp->font(); + m_pPositionLabel->setFont(font); + m_pCharCountLabel->setFont(font); + m_pCursorStatus->setFont(font); + m_scaleLabel->setFont(font); + m_progressLabel->setFont(font); + return false; + } +#endif + return QWidget::eventFilter(watched, event); +} + void BottomBar::paintEvent(QPaintEvent *) { QPainter painter(this); diff --git a/src/widgets/bottombar.h b/src/widgets/bottombar.h index e9a71e13..52f9e0b3 100644 --- a/src/widgets/bottombar.h +++ b/src/widgets/bottombar.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2017 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2017 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -53,6 +53,7 @@ class BottomBar : public QWidget protected: void paintEvent(QPaintEvent *); + bool eventFilter(QObject *, QEvent *) override; private: void initFormatMenu(); diff --git a/src/widgets/ddropdownmenu.cpp b/src/widgets/ddropdownmenu.cpp index 425f965c..8d36e310 100644 --- a/src/widgets/ddropdownmenu.cpp +++ b/src/widgets/ddropdownmenu.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2017 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2017 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -494,8 +494,11 @@ void DDropdownMenu::OnFontChangedSlot(const QFont &font) { qDebug() << "DDropdownMenu OnFontChangedSlot"; m_font = font; - int fontsize =DFontSizeManager::instance()->fontPixelSize(DFontSizeManager::T8); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + int fontsize = DFontSizeManager::instance()->fontPixelSize(DFontSizeManager::T8); m_font.setPixelSize(fontsize); +#endif + m_pToolButton->setFont(m_font); m_pToolButton->setIcon(createIcon()); qDebug() << "DDropdownMenu OnFontChangedSlot end"; } @@ -508,8 +511,7 @@ bool DDropdownMenu::eventFilter(QObject *object, QEvent *event) // 处理字体变化 QFont font = qApp->font(); // 获取当前应用程序字体 OnFontChangedSlot(font); // 调用槽函数更新字体 - qDebug() << "DDropdownMenu eventFilter ApplicationFontChange, return true"; - return true; + return false; } #endif