Skip to content

Commit

Permalink
替换资源
Browse files Browse the repository at this point in the history
  • Loading branch information
czyt1988 committed Dec 15, 2023
1 parent 24098ce commit 4b0e69b
Show file tree
Hide file tree
Showing 25 changed files with 331 additions and 121 deletions.
21 changes: 21 additions & 0 deletions readme-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,27 @@ SARibbon提供了合并好的`SARibbon.h`文件和`SARibbon.cpp`文件,只需
..\..\..\SARibbon\src\SARibbonBar\3rdparty\framelesshelper\src\core\framelessmanager.cpp(563): fatal error C1083: 无法打开包括文件: “framelessmanager.moc”: No such file or directory
```

### visual studio引入lib

有些工程直接使用vs引入lib,而不是通过cmake和qmake来管理,这里介绍一下如何通过visual studio的界面引用库

在引入lib后,还需要做如下事情:

1. 首先要在vs中添加include目录

```
{yourPath}\include\SARibbon
{yourPath}\include\SARibbon\3rdparty\framelesshelper\include
{yourPath}\include\SARibbon\3rdparty\framelesshelper\qmake\inc\core
```

2. 前处理添加预定义宏

```
SARIBBON_USE_3RDPARTY_FRAMELESSHELPER=1
FRAMELESSHELPER_FEATURE_static_build=-1
```

# 使用方法

## 引入库
Expand Down
30 changes: 26 additions & 4 deletions src/SARibbonBar/SARibbonMainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ SARibbonMainWindow::SARibbonMainWindow(QWidget* parent, bool useRibbon, const Qt
if (useRibbon) {
installRibbonBar(createRibbonBar());
setRibbonTheme(ribbonTheme());
} else {
setupNormalWindow();
}
}

Expand Down Expand Up @@ -108,6 +110,11 @@ bool SARibbonMainWindow::eventFilter(QObject* obj, QEvent* e)
}
return (QMainWindow::eventFilter(obj, e));
}
#else
FRAMELESSHELPER_PREPEND_NAMESPACE(FramelessWidgetsHelper*) SARibbonMainWindow::framelessHelper()
{
return FramelessWidgetsHelper::get(this);
}
#endif
/**
* @brief 此函数仅用于控制最小最大化和关闭按钮的显示
Expand Down Expand Up @@ -259,9 +266,6 @@ void SARibbonMainWindow::installRibbonBar(SARibbonBar* bar)
if (nullptr == d_ptr->mWindowButtonGroup) {
d_ptr->mWindowButtonGroup = new SAWindowButtonGroup(this);
}
QSize s = d_ptr->mWindowButtonGroup->sizeHint();
s.setHeight(bar->titleBarHeight());
d_ptr->mWindowButtonGroup->setFixedSize(s);
d_ptr->mWindowButtonGroup->setWindowStates(windowState());
d_ptr->mWindowButtonGroup->show();
helper->setHitTestVisible(d_ptr->mWindowButtonGroup); // IMPORTANT!
Expand Down Expand Up @@ -292,6 +296,22 @@ void SARibbonMainWindow::installRibbonBar(SARibbonBar* bar)
#endif
}

/**
@brief 构建为普通窗口
*/
void SARibbonMainWindow::setupNormalWindow()
{
#if SARIBBON_USE_3RDPARTY_FRAMELESSHELPER
auto helper = FramelessWidgetsHelper::get(this);
// 设置window按钮
if (nullptr == d_ptr->mWindowButtonGroup) {
d_ptr->mWindowButtonGroup = new SAWindowButtonGroup(this);
}
d_ptr->mWindowButtonGroup->setWindowStates(windowState());
d_ptr->mWindowButtonGroup->show();
#endif
}

void sa_set_ribbon_theme(QWidget* w, SARibbonMainWindow::RibbonTheme theme)
{
QFile file;
Expand All @@ -318,5 +338,7 @@ void sa_set_ribbon_theme(QWidget* w, SARibbonMainWindow::RibbonTheme theme)
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
return;
}
w->setStyleSheet(file.readAll());
// 有反馈用qstring接住文件内容,再设置进去才能生效(qt5.7版本)
QString qss = file.readAll();
w->setStyleSheet(qss);
}
7 changes: 6 additions & 1 deletion src/SARibbonBar/SARibbonMainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "FramelessHelper/Widgets/framelessmainwindow.h"
FRAMELESSHELPER_BEGIN_NAMESPACE
class StandardTitleBar;
class FramelessWidgetsHelper;
FRAMELESSHELPER_END_NAMESPACE
#else
class SAFramelessHelper;
Expand Down Expand Up @@ -74,6 +75,8 @@ class SA_RIBBON_EXPORT SARibbonMainWindow : public QMainWindow
SAFramelessHelper* framelessHelper();
// 把ribbonbar的事件传递到frameless
virtual bool eventFilter(QObject* obj, QEvent* e) Q_DECL_OVERRIDE;
#else
FRAMELESSHELPER_PREPEND_NAMESPACE(FramelessWidgetsHelper*) framelessHelper();
#endif
// 此函数仅用于控制最小最大化和关闭按钮的显示
void updateWindowFlag(Qt::WindowFlags flags);
Expand All @@ -83,7 +86,7 @@ class SA_RIBBON_EXPORT SARibbonMainWindow : public QMainWindow
RibbonTheme ribbonTheme() const;
// 判断当前是否使用ribbon模式
bool isUseRibbon() const;
//获取左上角按钮组(最大化,最小化,关闭)
// 获取左上角按钮组(最大化,最小化,关闭)
SAWindowButtonGroup* windowButtonGroup() const;

protected:
Expand All @@ -95,6 +98,8 @@ class SA_RIBBON_EXPORT SARibbonMainWindow : public QMainWindow
private:
// 安装ribbon
void installRibbonBar(SARibbonBar* bar);
// 构建为普通窗口
void setupNormalWindow();
};

/**
Expand Down
22 changes: 17 additions & 5 deletions src/SARibbonBar/SAWindowButtonGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#include <QStyle>
#include <QDebug>
#include <QScopedPointer>
#include "SARibbonMainWindow.h"
#include "SARibbonBar.h"
#include "SARibbonElementManager.h"
// 为了避免使用此框架的app设置了全局的qpushbutton 的 qss样式影响此按钮,定义了一个类

Expand Down Expand Up @@ -39,7 +41,7 @@ class SAWindowButtonGroup::PrivateData
buttonMinimize->setObjectName(QStringLiteral("SAMinimizeWindowButton"));
buttonMinimize->setFixedSize(30, par->height() - 2);
buttonMinimize->setFocusPolicy(Qt::NoFocus); // 避免铺抓到
buttonMinimize->setIconSize(buttonMinimize->size() * mIconscale);
// buttonMinimize->setIconSize(buttonMinimize->size() * mIconscale);
buttonMinimize->show();
par->connect(buttonMinimize, &QAbstractButton::clicked, par, &SAWindowButtonGroup::minimizeWindow);
} else {
Expand All @@ -65,7 +67,7 @@ class SAWindowButtonGroup::PrivateData
buttonMaximize->setFixedSize(30, par->height() - 2);
buttonMaximize->setCheckable(true);
buttonMaximize->setFocusPolicy(Qt::NoFocus); // 避免铺抓到
buttonMaximize->setIconSize(buttonMaximize->size() * mIconscale);
// buttonMaximize->setIconSize(buttonMaximize->size() * mIconscale);
buttonMaximize->show();
par->connect(buttonMaximize, &QAbstractButton::clicked, par, &SAWindowButtonGroup::maximizeWindow);
} else {
Expand All @@ -92,7 +94,7 @@ class SAWindowButtonGroup::PrivateData
buttonClose->setFocusPolicy(Qt::NoFocus); // 避免铺抓到
// buttonClose->setFlat(true);
par->connect(buttonClose, &QAbstractButton::clicked, par, &SAWindowButtonGroup::closeWindow);
buttonClose->setIconSize(buttonClose->size() * mIconscale);
// buttonClose->setIconSize(buttonClose->size() * mIconscale);
buttonClose->show();
} else {
if (buttonClose) {
Expand Down Expand Up @@ -176,7 +178,9 @@ SAWindowToolButton::SAWindowToolButton(QWidget* p) : QPushButton(p)
{
setFlat(true);
}

//===================================================
// SAWindowButtonGroup
//===================================================
SAWindowButtonGroup::SAWindowButtonGroup(QWidget* parent)
: QWidget(parent), d_ptr(new SAWindowButtonGroup::PrivateData(this))
{
Expand Down Expand Up @@ -344,7 +348,15 @@ bool SAWindowButtonGroup::eventFilter(QObject* watched, QEvent* e)
void SAWindowButtonGroup::parentResize()
{
QWidget* par = parentWidget();

if (SARibbonMainWindow* rb = qobject_cast< SARibbonMainWindow* >(par)) {
if (SARibbonBar* bar = rb->ribbonBar()) {
// 先看看titlebar多高
if (height() != bar->titleBarHeight()) {
setFixedHeight(bar->titleBarHeight());
}
d_ptr->resize(QSize(width(), height()));
}
}
if (par) {
QSize parSize = par->size();
move(parSize.width() - width() - 1, 0);
Expand Down
13 changes: 8 additions & 5 deletions src/SARibbonBar/resource.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@
<file>resource/ArrowDown.png</file>
<file>resource/ArrowMore.png</file>
<file>resource/ArrowUp.png</file>
<file>resource/Titlebar_Close.png</file>
<file>resource/Titlebar_Close_Hover.png</file>
<file>resource/Titlebar_Max.png</file>
<file>resource/Titlebar_Min.png</file>
<file>resource/Titlebar_Normal.png</file>
<file>resource/Titlebar_Shade.png</file>
<file>resource/Titlebar_Unshade.png</file>
<file>resource/define-color.svg</file>
<file>resource/Titlebar_Close.svg</file>
<file>resource/Titlebar_Close_Hover.svg</file>
<file>resource/Titlebar_Max.svg</file>
<file>resource/Titlebar_Max_Hover.svg</file>
<file>resource/Titlebar_Min.svg</file>
<file>resource/Titlebar_Min_Hover.svg</file>
<file>resource/Titlebar_Normal.svg</file>
<file>resource/Titlebar_Normal_Hover.svg</file>
</qresource>
<qresource prefix="/theme">
<file>resource/theme-win7.qss</file>
Expand Down
Binary file removed src/SARibbonBar/resource/Titlebar_Close.png
Binary file not shown.
1 change: 1 addition & 0 deletions src/SARibbonBar/resource/Titlebar_Close.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/SARibbonBar/resource/Titlebar_Close_Hover.png
Binary file not shown.
1 change: 1 addition & 0 deletions src/SARibbonBar/resource/Titlebar_Close_Hover.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/SARibbonBar/resource/Titlebar_Max.png
Binary file not shown.
1 change: 1 addition & 0 deletions src/SARibbonBar/resource/Titlebar_Max.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions src/SARibbonBar/resource/Titlebar_Max_Hover.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/SARibbonBar/resource/Titlebar_Min.png
Binary file not shown.
1 change: 1 addition & 0 deletions src/SARibbonBar/resource/Titlebar_Min.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions src/SARibbonBar/resource/Titlebar_Min_Hover.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/SARibbonBar/resource/Titlebar_Normal.png
Binary file not shown.
1 change: 1 addition & 0 deletions src/SARibbonBar/resource/Titlebar_Normal.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions src/SARibbonBar/resource/Titlebar_Normal_Hover.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
47 changes: 27 additions & 20 deletions src/SARibbonBar/resource/theme-dark.qss
Original file line number Diff line number Diff line change
Expand Up @@ -313,47 +313,54 @@ SARibbonCategoryScrollButton[arrowType="4"] {
border-left-width: 0.05em;
}
/*SAWindowToolButton*/
SAWindowToolButton {
background-color: transparent;

SAWindowToolButton {
background-color: transparent;
border:none;
}

SAWindowToolButton:focus {
outline: none;
}

/*Min*/
SAWindowToolButton#SAMinimizeWindowButton {
image: url(:/image/resource/Titlebar_Min.png);
}

SAWindowToolButton#SAMaximizeWindowButton:checked {
image:url(:/image/resource/Titlebar_Normal.png);
qproperty-iconSize: 16px 16px;
qproperty-icon: url(:/image/resource/Titlebar_Min.svg) center;
}

SAWindowToolButton#SAMaximizeWindowButton {
image:url(:/image/resource/Titlebar_Max.png);
}

SAWindowToolButton#SAMinimizeWindowButton:hover,#SAMaximizeWindowButton:hover {
background-color: #e5e5e5;
qproperty-iconSize: 16px 16px;
qproperty-icon: url(:/image/resource/Titlebar_Min_Hover.svg) center;
}

SAWindowToolButton#SAMinimizeWindowButton:pressed,#SAMaximizeWindowButton:pressed {
background-color: #cacacb;
}
/*Max*/
SAWindowToolButton#SAMaximizeWindowButton {
qproperty-iconSize: 16px 16px;
qproperty-icon: url(:/image/resource/Titlebar_Max.svg) center;
}
SAWindowToolButton#SAMaximizeWindowButton:checked {
qproperty-icon: url(:/image/resource/Titlebar_Normal.svg) center;
}
SAWindowToolButton#SAMaximizeWindowButton:hover {
background-color: #e5e5e5;
qproperty-icon: url(:/image/resource/Titlebar_Max_Hover.svg) center;
}


/*Close*/
SAWindowToolButton#SACloseWindowButton {
image: url(:/image/resource/Titlebar_Close_Hover.png);
qproperty-iconSize: 16px 16px;
qproperty-icon: url(:/image/resource/Titlebar_Close.svg) center;
}

SAWindowToolButton#SACloseWindowButton:hover {
background-color: #e81123;
image: url(:/image/resource/Titlebar_Close.png);
qproperty-icon: url(:/image/resource/Titlebar_Close_Hover.svg) center;
}

SAWindowToolButton#SACloseWindowButton:pressed {
background-color: #f1707a;
image: url(:/image/resource/Titlebar_Close.png);
background-color: #f1707a;
qproperty-icon: url(:/image/resource/Titlebar_Close_Hover.svg) center;
}

SAWindowToolButton#SARibbonBarHidePannelButton {
Expand Down
45 changes: 27 additions & 18 deletions src/SARibbonBar/resource/theme-office2013.qss
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,9 @@ SARibbonCategoryScrollButton:hover {
background-color: #cee7fc;
}


/*SAWindowToolButton*/

SAWindowToolButton {
background-color: transparent;
border:none;
Expand All @@ -345,39 +348,45 @@ SAWindowToolButton {
SAWindowToolButton:focus {
outline: none;
}

/*Min*/
SAWindowToolButton#SAMinimizeWindowButton {
image: url(:/image/resource/Titlebar_Min.png);
}

SAWindowToolButton#SAMaximizeWindowButton:checked {
image:url(:/image/resource/Titlebar_Normal.png);
qproperty-iconSize: 16px 16px;
qproperty-icon: url(:/image/resource/Titlebar_Min.svg) center;
}

SAWindowToolButton#SAMaximizeWindowButton {
image:url(:/image/resource/Titlebar_Max.png);
}

SAWindowToolButton#SAMinimizeWindowButton:hover,#SAMaximizeWindowButton:hover {
background-color: #e5e5e5;
qproperty-iconSize: 16px 16px;
qproperty-icon: url(:/image/resource/Titlebar_Min_Hover.svg) center;
}

SAWindowToolButton#SAMinimizeWindowButton:pressed,#SAMaximizeWindowButton:pressed {
background-color: #cacacb;
}
/*Max*/
SAWindowToolButton#SAMaximizeWindowButton {
qproperty-iconSize: 16px 16px;
qproperty-icon: url(:/image/resource/Titlebar_Max.svg) center;
}
SAWindowToolButton#SAMaximizeWindowButton:checked {
qproperty-icon: url(:/image/resource/Titlebar_Normal.svg) center;
}
SAWindowToolButton#SAMaximizeWindowButton:hover {
background-color: #e5e5e5;
qproperty-icon: url(:/image/resource/Titlebar_Max_Hover.svg) center;
}


/*Close*/
SAWindowToolButton#SACloseWindowButton {
image: url(:/image/resource/Titlebar_Close.png);
qproperty-iconSize: 16px 16px;
qproperty-icon: url(:/image/resource/Titlebar_Close.svg) center;
}

SAWindowToolButton#SACloseWindowButton:hover {
background-color: #e81123;
image: url(:/image/resource/Titlebar_Close_Hover.png);
qproperty-icon: url(:/image/resource/Titlebar_Close_Hover.svg) center;
}

SAWindowToolButton#SACloseWindowButton:pressed {
background-color: #f1707a;
image: url(:/image/resource/Titlebar_Close_Hover.png);
background-color: #f1707a;
qproperty-icon: url(:/image/resource/Titlebar_Close_Hover.svg) center;
}

SAWindowToolButton#SARibbonBarHidePannelButton {
Expand Down
Loading

0 comments on commit 4b0e69b

Please sign in to comment.