From df53287060966d78ffccac78342fb5d0a028f835 Mon Sep 17 00:00:00 2001 From: sola.lu <sola.lu.greentest.com.cn> Date: 周二, 10 6月 2025 19:03:07 +0800 Subject: [PATCH] 1.添加翻译,about,手册,login这几个按钮到标题栏。 --- examples/shared/widgetframe/CMakeLists.txt | 8 ++ examples/shared/widgetframe/windowbar.cpp | 116 ++++++++++++++++++++++++++++++++++++++ examples/shared/widgetframe/windowbar_p.h | 4 + examples/shared/widgetframe/windowbar.h | 18 ++++++ 4 files changed, 145 insertions(+), 1 deletions(-) diff --git a/examples/shared/widgetframe/CMakeLists.txt b/examples/shared/widgetframe/CMakeLists.txt index e4e2a9b..641f1c0 100644 --- a/examples/shared/widgetframe/CMakeLists.txt +++ b/examples/shared/widgetframe/CMakeLists.txt @@ -14,4 +14,10 @@ QT_LINKS Core Gui Widgets ) -target_include_directories(${PROJECT_NAME} PUBLIC . ..) \ No newline at end of file +# target_include_directories(${PROJECT_NAME} PUBLIC . ..) +target_include_directories(${PROJECT_NAME} + PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..> + # $<INSTALL_INTERFACE:include> +) \ No newline at end of file diff --git a/examples/shared/widgetframe/windowbar.cpp b/examples/shared/widgetframe/windowbar.cpp index 38a398e..98ce86e 100644 --- a/examples/shared/widgetframe/windowbar.cpp +++ b/examples/shared/widgetframe/windowbar.cpp @@ -99,6 +99,30 @@ return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::CloseButton)); } + QAbstractButton *WindowBar::loginButton() const + { + Q_D(const WindowBar); + return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::LoginButton)); + } + + QAbstractButton *WindowBar::languageButton() const + { + Q_D(const WindowBar); + return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::LanguageButton)); + } + + QAbstractButton *WindowBar::manualButton() const + { + Q_D(const WindowBar); + return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::ManualButton)); + } + + QAbstractButton *WindowBar::aboutButton() const + { + Q_D(const WindowBar); + return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::AboutButton)); + } + void WindowBar::setMenuBar(QMenuBar *menuBar) { Q_D(WindowBar); auto org = takeMenuBar(); @@ -180,6 +204,54 @@ connect(btn, &QAbstractButton::clicked, this, &WindowBar::closeRequested); } + void WindowBar::setLoginButton(QAbstractButton *btn) + { + Q_D(WindowBar); + auto org = takeLoginButton(); + if (org) + org->deleteLater(); + if (!btn) + return; + d->setWidgetAt(WindowBarPrivate::LoginButton, btn); + connect(btn, &QAbstractButton::clicked, this, &WindowBar::loginRequested); + } + + void WindowBar::setLanguageButton(QAbstractButton *btn) + { + Q_D(WindowBar); + auto org = takeLanguageButton(); + if(org) + org->deleteLater(); + if(!btn) + return; + d->setWidgetAt(WindowBarPrivate::LanguageButton, btn); + connect(btn, &QAbstractButton::clicked, this, &WindowBar::languageRequested); + } + + void WindowBar::setManualButton(QAbstractButton *btn) + { + Q_D(WindowBar); + auto org = takeManualButton(); + if(org) + org->deleteLater(); + if(!btn) + return; + d->setWidgetAt(WindowBarPrivate::ManualButton, btn); + connect(btn, &QAbstractButton::clicked, this, &WindowBar::manualRequested); + } + + void WindowBar::setAboutButton(QAbstractButton *btn) + { + Q_D(WindowBar); + auto org = takeAboutButton(); + if(org) + org->deleteLater(); + if(!btn) + return; + d->setWidgetAt(WindowBarPrivate::AboutButton, btn); + connect(btn, &QAbstractButton::clicked, this, &WindowBar::aboutRequested); + } + QMenuBar *WindowBar::takeMenuBar() { Q_D(WindowBar); return static_cast<QMenuBar *>(d->takeWidgetAt(WindowBarPrivate::MenuWidget)); @@ -235,6 +307,50 @@ return btn; } + QAbstractButton *WindowBar::takeLoginButton() + { + Q_D(WindowBar); + auto btn = static_cast<QAbstractButton*>(d->takeWidgetAt(WindowBarPrivate::LoginButton)); + if(!btn){ + return nullptr; + } + disconnect(btn, &QAbstractButton::clicked, this, &WindowBar::loginRequested); + return btn; + } + + QAbstractButton *WindowBar::takeLanguageButton() + { + Q_D(WindowBar); + auto btn = static_cast<QAbstractButton*>(d->takeWidgetAt(WindowBarPrivate::LanguageButton)); + if(!btn){ + return nullptr; + } + disconnect(btn, &QAbstractButton::clicked, this, &WindowBar::languageRequested); + return btn; + } + + QAbstractButton *WindowBar::takeManualButton() + { + Q_D(WindowBar); + auto btn = static_cast<QAbstractButton*>(d->takeWidgetAt(WindowBarPrivate::ManualButton)); + if(!btn){ + return nullptr; + } + disconnect(btn, &QAbstractButton::clicked, this, &WindowBar::manualRequested); + return btn; + } + + QAbstractButton *WindowBar::takeAboutButton() + { + Q_D(WindowBar); + auto btn = static_cast<QAbstractButton*>(d->takeWidgetAt(WindowBarPrivate::AboutButton)); + if(!btn){ + return nullptr; + } + disconnect(btn, &QAbstractButton::clicked, this, &WindowBar::aboutRequested); + return btn; + } + QWidget *WindowBar::hostWidget() const { Q_D(const WindowBar); return d->w; diff --git a/examples/shared/widgetframe/windowbar.h b/examples/shared/widgetframe/windowbar.h index e9cf04c..75bba3d 100644 --- a/examples/shared/widgetframe/windowbar.h +++ b/examples/shared/widgetframe/windowbar.h @@ -29,6 +29,10 @@ QAbstractButton *minButton() const; QAbstractButton *maxButton() const; QAbstractButton *closeButton() const; + QAbstractButton *loginButton() const; + QAbstractButton *languageButton() const; + QAbstractButton *manualButton() const; + QAbstractButton *aboutButton() const; void setMenuBar(QMenuBar *menuBar); void setTitleLabel(QLabel *label); @@ -37,6 +41,10 @@ void setMinButton(QAbstractButton *btn); void setMaxButton(QAbstractButton *btn); void setCloseButton(QAbstractButton *btn); + void setLoginButton(QAbstractButton *btn); + void setLanguageButton(QAbstractButton *btn); + void setManualButton(QAbstractButton *btn); + void setAboutButton(QAbstractButton *btn); QMenuBar *takeMenuBar(); QLabel *takeTitleLabel(); @@ -45,6 +53,10 @@ QAbstractButton *takeMinButton(); QAbstractButton *takeMaxButton(); QAbstractButton *takeCloseButton(); + QAbstractButton *takeLoginButton(); + QAbstractButton *takeLanguageButton(); + QAbstractButton *takeManualButton(); + QAbstractButton *takeAboutButton(); QWidget *hostWidget() const; void setHostWidget(QWidget *w); @@ -60,6 +72,12 @@ void minimizeRequested(); void maximizeRequested(bool max = false); void closeRequested(); + + //鍒嗗埆涓虹炕璇戯紝鎵嬪唽锛岀櫥褰曞拰about + void languageRequested(); + void manualRequested(); + void loginRequested(); + void aboutRequested(); protected: bool eventFilter(QObject *obj, QEvent *event) override; diff --git a/examples/shared/widgetframe/windowbar_p.h b/examples/shared/widgetframe/windowbar_p.h index 35422ae..5824f63 100644 --- a/examples/shared/widgetframe/windowbar_p.h +++ b/examples/shared/widgetframe/windowbar_p.h @@ -29,6 +29,10 @@ IconButton, MenuWidget, TitleLabel, + LoginButton, + LanguageButton, + ManualButton, + AboutButton, PinButton, MinimizeButton, MaximizeButton, -- Gitblit v1.9.1