Skip to content

Commit

Permalink
调整cmake构建时的输出路径
Browse files Browse the repository at this point in the history
- 调整最小化按钮的实现,去除button
- 统一cmake在构建时的bin输出位置,这样可以在编译结束后运行例子
- 添加了cmake构建的文档
  • Loading branch information
czyt1988 committed Dec 6, 2023
1 parent ac4ac8b commit bdf672c
Show file tree
Hide file tree
Showing 9 changed files with 58 additions and 61 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ tmp-file
.vs

# vscode 的隐藏文件
/.vscode
.vscode

# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ set(SARIBBON_BIN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${SARIBBON_BIN_NAME})

# windows系统下,默认直接安装到当前文件夹下
if(WIN32)
set(CMAKE_INSTALL_PREFIX "${SARIBBON_BIN_DIR}/SARibbon")
set(CMAKE_INSTALL_PREFIX "${SARIBBON_BIN_DIR}")
endif()

add_subdirectory(src)
Expand Down
35 changes: 22 additions & 13 deletions readme-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,19 +159,9 @@ SARibbon提供了合并好的`SARibbon.h`文件和`SARibbon.cpp`文件,只需
### cmake

使用Qt Creator或者visual studio打开`src/CMakeLists.txt`编译即可

```cmake
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH={YOUR_QT_SDK_DIR_PATH} -DCMAKE_INSTALL_PREFIX={WHERE_YOU_WANT_TO_INSTALL} -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target all --parallel
cmake --install . --config Release --strip
```

{YOUR_QT_SDK_DIR_PATH}是你的qtsdk的目录,类似`D:\Qt\5.14.2\msvc2017_64\`
使用Qt Creator或者visual studio打开`根目录下的CMakeLists.txt`编译即可

{WHERE_YOU_WANT_TO_INSTALL}是你的安装目录
具体教程见[使用cmake构建及使用SARibbon的教程](./doc/build-cmake.md)

## 编译过程的常见问题

Expand All @@ -181,7 +171,6 @@ cmake --install . --config Release --strip
..\..\..\SARibbon\src\SARibbonBar\3rdparty\framelesshelper\src\core\framelessmanager.cpp(563): fatal error C1083: 无法打开包括文件: “framelessmanager.moc”: No such file or directory
```


# 使用方法

## 引入库
Expand Down Expand Up @@ -222,7 +211,27 @@ qmake的编译过程会在SARibbon下生成bin_qtx.x_xx文件夹,库文件和d

cmake在执行install后,会把必要的文件拷贝到安装目录下,cmake文件编写时可参考`src/example/MainWindowExample/CMakeLists.txt`

具体教程见[使用cmake构建及使用SARibbon的教程](./doc/build-cmake.md)

### visual studio添加

如果你的qt版本大于等于5.14,会使用第三方库frameless,此时使用vs的界面操作添加SARibbon需要注意以下几点:

1、include路径有三个
```
src/SARibbonBar
src/SARibbonBar/3rdparty/framelesshelper/include
src/SARibbonBar/3rdparty/framelesshelper/qmake/inc/core
```

2、预定义宏有两个:

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

否则会报LNK2001的错误

## 快速开始

Expand Down
3 changes: 3 additions & 0 deletions src/SARibbonBar/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,9 @@ set_target_properties(${SARIBBON_LIB_NAME} PROPERTIES
DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}
VERSION ${SARIBBON_VERSION}
EXPORT_NAME ${SARIBBON_LIB_NAME}
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
# 构建库定义的宏,此宏必须为PRIVATE
target_compile_definitions(${SARIBBON_LIB_NAME} PRIVATE SA_RIBBON_BAR_MAKE_LIB)
Expand Down
57 changes: 25 additions & 32 deletions src/SARibbonBar/SARibbonBar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,15 +63,15 @@ class SARibbonBar::PrivateData
QList< SARibbonContextCategory* > mContextCategoryList; ///< 存放所有的上下文标签
QList< _SARibbonTabData > mHidedCategory;
int mIconRightBorderPosition; ///< 标题栏x值得最小值,在有图标和快捷启动按钮,此值都需要变化
SARibbonControlButton* mMinimumCategoryButton; ///< 隐藏面板按钮
SARibbonButtonGroupWidget* mRightButtonGroup; ///< 在tab bar右边的按钮群
SARibbonQuickAccessBar* mQuickAccessBar; ///< 快速响应栏
SARibbonBar::RibbonStyle mRibbonStyle; ///< ribbon的风格
SARibbonBar::RibbonStyle mLastShowStyle; ///< ribbon的风格
SARibbonBar::RibbonMode mCurrentRibbonMode; ///< 记录当前模式
QSize mWindowButtonSize; ///< 由SARibbonMainWindow告诉的windowbutton的尺寸
QList< QColor > mContextCategoryColorList; ///< contextCategory的色系
int mContextCategoryColorListIndex; ///< 记录contextCategory色系索引
QAction* mMinimumCategoryButtonAction; ///< 隐藏面板按钮action
SARibbonButtonGroupWidget* mRightButtonGroup; ///< 在tab bar右边的按钮群
SARibbonQuickAccessBar* mQuickAccessBar; ///< 快速响应栏
SARibbonBar::RibbonStyle mRibbonStyle; ///< ribbon的风格
SARibbonBar::RibbonStyle mLastShowStyle; ///< ribbon的风格
SARibbonBar::RibbonMode mCurrentRibbonMode; ///< 记录当前模式
QSize mWindowButtonSize; ///< 由SARibbonMainWindow告诉的windowbutton的尺寸
QList< QColor > mContextCategoryColorList; ///< contextCategory的色系
int mContextCategoryColorListIndex; ///< 记录contextCategory色系索引
QColor mTitleTextColor; ///< 标题文字颜色,默认无效,无效的情况下和SARibbonBar的qss:color属性一致
QColor mTabBarBaseLineColor; ///< tabbar 底部会绘制一条线条,定义线条颜色
Qt::Alignment mTitleAligment; ///< 标题对齐方式
Expand All @@ -86,7 +86,7 @@ class SARibbonBar::PrivateData
, mRibbonTabBar(nullptr)
, mStackedContainerWidget(nullptr)
, mIconRightBorderPosition(1)
, mMinimumCategoryButton(nullptr)
, mMinimumCategoryButtonAction(nullptr)
, mRightButtonGroup(nullptr)
, mRibbonStyle(SARibbonBar::RibbonStyleLooseThreeRow)
, mLastShowStyle(SARibbonBar::RibbonStyleLooseThreeRow)
Expand Down Expand Up @@ -857,28 +857,21 @@ void SARibbonBar::showMinimumModeButton(bool isShow)
{
if (isShow) {
activeRightButtonGroup();
if (nullptr == d_ptr->mMinimumCategoryButton) {
d_ptr->mMinimumCategoryButton = RibbonSubElementDelegate->createHidePannelButton(this);
d_ptr->mMinimumCategoryButton->ensurePolished(); // 载入样式图标
QAction* action = new QAction(d_ptr->mMinimumCategoryButton);
action->setIcon(style()->standardIcon(isMinimumMode() ? QStyle::SP_TitleBarUnshadeButton : QStyle::SP_TitleBarShadeButton,
0,
d_ptr->mMinimumCategoryButton));
connect(action, &QAction::triggered, this, [ = ]() {
this->setMinimumMode(!isMinimumMode());
action->setIcon(style()->standardIcon(isMinimumMode() ? QStyle::SP_TitleBarUnshadeButton : QStyle::SP_TitleBarShadeButton,
0,
d_ptr->mMinimumCategoryButton));
});
d_ptr->mMinimumCategoryButton->setDefaultAction(action);
d_ptr->mRightButtonGroup->addWidget(d_ptr->mMinimumCategoryButton);
update();
}

d_ptr->mMinimumCategoryButtonAction = new QAction(this);
d_ptr->mMinimumCategoryButtonAction->setIcon(
style()->standardIcon(isMinimumMode() ? QStyle::SP_TitleBarUnshadeButton : QStyle::SP_TitleBarShadeButton, nullptr));
connect(d_ptr->mMinimumCategoryButtonAction, &QAction::triggered, this, [ this ]() {
this->setMinimumMode(!isMinimumMode());
this->d_ptr->mMinimumCategoryButtonAction->setIcon(
style()->standardIcon(isMinimumMode() ? QStyle::SP_TitleBarUnshadeButton : QStyle::SP_TitleBarShadeButton, nullptr));
});
d_ptr->mRightButtonGroup->addAction(d_ptr->mMinimumCategoryButtonAction);

} else {
if (nullptr != d_ptr->mMinimumCategoryButton) {
d_ptr->mMinimumCategoryButton->hide();
d_ptr->mMinimumCategoryButton->deleteLater();
d_ptr->mMinimumCategoryButton = nullptr;
if (nullptr != d_ptr->mMinimumCategoryButtonAction) {
d_ptr->mMinimumCategoryButtonAction->deleteLater();
d_ptr->mMinimumCategoryButtonAction = nullptr;
}
}
QResizeEvent resizeEvent(size(), size());
Expand All @@ -892,7 +885,7 @@ void SARibbonBar::showMinimumModeButton(bool isShow)
///
bool SARibbonBar::haveShowMinimumModeButton() const
{
return (nullptr != d_ptr->mMinimumCategoryButton);
return (nullptr != d_ptr->mMinimumCategoryButtonAction);
}

int SARibbonBar::tabBarHeight() const
Expand Down
11 changes: 0 additions & 11 deletions src/SARibbonBar/SARibbonElementFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,17 +84,6 @@ SARibbonStackedWidget* SARibbonElementFactory::createRibbonStackedWidget(SARibbo
return (new SARibbonStackedWidget(parent));
}

SARibbonControlButton* SARibbonElementFactory::createHidePannelButton(SARibbonBar* parent)
{
SARibbonControlButton* btn = new SARibbonControlButton(parent);

btn->setAutoRaise(false);
btn->setObjectName(QStringLiteral("SARibbonBarHidePannelButton"));
btn->setToolButtonStyle(Qt::ToolButtonIconOnly);
btn->setFixedSize(parent->tabBarHeight() - 4, parent->tabBarHeight() - 4);
return (btn);
}

SARibbonButtonGroupWidget* SARibbonElementFactory::craeteButtonGroupWidget(QWidget* parent)
{
return (new SARibbonButtonGroupWidget(parent));
Expand Down
3 changes: 0 additions & 3 deletions src/SARibbonBar/SARibbonElementFactory.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@ class SA_RIBBON_EXPORT SARibbonElementFactory
virtual SARibbonToolButton* createRibbonToolButton(QWidget* parent);
virtual SARibbonControlButton* createRibbonControlButton(QWidget* parent);
virtual SARibbonStackedWidget* createRibbonStackedWidget(SARibbonBar* parent);

//创建隐藏ribbon的按钮代理函数
virtual SARibbonControlButton* createHidePannelButton(SARibbonBar* parent);
virtual SARibbonButtonGroupWidget* craeteButtonGroupWidget(QWidget* parent);
virtual SARibbonQuickAccessBar* createQuickAccessBar(QWidget* parent);

Expand Down
3 changes: 3 additions & 0 deletions src/example/MainWindowExample/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ set_target_properties(${SARIBBON_EXPAMPLE_NAME} PROPERTIES
DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}
VERSION ${SARIBBON_VERSION}
EXPORT_NAME ${SARIBBON_EXPAMPLE_NAME}
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)

install(TARGETS ${SARIBBON_EXPAMPLE_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION bin ARCHIVE DESTINATION lib)
Expand Down
3 changes: 3 additions & 0 deletions src/example/WidgetWithRibbon/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ set_target_properties(${SARIBBON_EXPAMPLE_NAME} PROPERTIES
DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}
VERSION ${SARIBBON_VERSION}
EXPORT_NAME ${SARIBBON_EXPAMPLE_NAME}
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)

install(TARGETS ${SARIBBON_EXPAMPLE_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION bin ARCHIVE DESTINATION lib)
Expand Down

0 comments on commit bdf672c

Please sign in to comment.