sola.lu
7 天以前 df53287060966d78ffccac78342fb5d0a028f835
1.添加翻译,about,手册,login这几个按钮到标题栏。
4个文件已修改
146 ■■■■■ 已修改文件
examples/shared/widgetframe/CMakeLists.txt 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
examples/shared/widgetframe/windowbar.cpp 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
examples/shared/widgetframe/windowbar.h 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
examples/shared/widgetframe/windowbar_p.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
examples/shared/widgetframe/CMakeLists.txt
@@ -14,4 +14,10 @@
    QT_LINKS Core Gui Widgets
)
target_include_directories(${PROJECT_NAME} PUBLIC . ..)
# 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>
)
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;
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;
examples/shared/widgetframe/windowbar_p.h
@@ -29,6 +29,10 @@
            IconButton,
            MenuWidget,
            TitleLabel,
            LoginButton,
            LanguageButton,
            ManualButton,
            AboutButton,
            PinButton,
            MinimizeButton,
            MaximizeButton,