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