Skip to content

Commit

Permalink
调整QuickAccessBar和RightBar的布局方案
Browse files Browse the repository at this point in the history
  • Loading branch information
czyt1988 committed Jan 18, 2024
1 parent 644d294 commit 079b303
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 226 deletions.
90 changes: 9 additions & 81 deletions src/SARibbonBar/SARibbonBar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,6 @@ class SARibbonBar::PrivateData
QColor mTabBarBaseLineColor { QColor(186, 201, 219) }; ///< tabbar 底部会绘制一条线条,定义线条颜色
Qt::Alignment mTitleAligment { Qt::AlignCenter }; ///< 标题对齐方式
bool mIsTitleVisible { true }; ///< 标题是否显示
bool mEnableUserDefineAccessBarIconSize { false }; ///< 允许用户自定义AccessBar的IconSize
bool mEnableUserDefineRightBarIconSize { false }; ///< 允许用户自定义RightBar的IconSize
SARibbonAlignment mRibbonAlignment { SARibbonAlignment::AlignLeft }; ///< 对齐方式
SARibbonPannel::PannelLayoutMode mDefaulePannelLayoutMode { SARibbonPannel::ThreeRowMode }; ///< 默认的PannelLayoutMode
bool mEnableShowPannelTitle { true }; ///< 是否运行pannel的标题栏显示
Expand Down Expand Up @@ -154,10 +152,7 @@ void SARibbonBar::PrivateData::init()
//
mStackedContainerWidget = RibbonSubElementFactory->createRibbonStackedWidget(q_ptr);
mStackedContainerWidget->setObjectName(QStringLiteral("objSARibbonStackedContainerWidget"));
mStackedContainerWidget->connect(mStackedContainerWidget,
&SARibbonStackedWidget::hidWindow,
q_ptr,
&SARibbonBar::onStackWidgetHided);
mStackedContainerWidget->connect(mStackedContainerWidget, &SARibbonStackedWidget::hidWindow, q_ptr, &SARibbonBar::onStackWidgetHided);
// 捕获事件,在popmode时必须用到
mStackedContainerWidget->installEventFilter(q_ptr);
//
Expand Down Expand Up @@ -236,11 +231,7 @@ int SARibbonBar::PrivateData::calcCategoryHeight()
* @param categoryHeight
* @return
*/
int SARibbonBar::PrivateData::calcMainBarHeight(int tabHegith,
int titleHeight,
int categoryHeight,
bool tabOnTitle,
SARibbonBar::RibbonMode rMode)
int SARibbonBar::PrivateData::calcMainBarHeight(int tabHegith, int titleHeight, int categoryHeight, bool tabOnTitle, SARibbonBar::RibbonMode rMode)
{
if (rMode == MinimumRibbonMode) {
// 最小模式,没有categoryHeight
Expand Down Expand Up @@ -525,7 +516,7 @@ QList< QColor > SARibbonBar::defaultContextCategoryColorList()
<< QColor(14, 81, 167) //
<< QColor(228, 0, 69) //
<< QColor(67, 148, 0) // 绿
;
;
return res;
}

Expand Down Expand Up @@ -1090,13 +1081,11 @@ void SARibbonBar::showMinimumModeButton(bool isShow)

d_ptr->mMinimumCategoryButtonAction = new QAction(this);
d_ptr->mMinimumCategoryButtonAction->setIcon(
style()->standardIcon(isMinimumMode() ? QStyle::SP_TitleBarUnshadeButton : QStyle::SP_TitleBarShadeButton,
nullptr));
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));
style()->standardIcon(isMinimumMode() ? QStyle::SP_TitleBarUnshadeButton : QStyle::SP_TitleBarShadeButton, nullptr));
});
d_ptr->mRightButtonGroup->addAction(d_ptr->mMinimumCategoryButtonAction);

Expand Down Expand Up @@ -1486,7 +1475,7 @@ void SARibbonBar::setRibbonStyle(SARibbonBar::RibbonStyles v)
<< "\n isTwoRowStyle=" << isTwoRowStyle() //
<< "\n isLooseStyle=" << isLooseStyle() //
<< "\n isCompactStyle=" << isCompactStyle() //
;
;
#endif
// 执行判断
setEnableWordWrap(isThreeRowStyle(v));
Expand Down Expand Up @@ -1789,66 +1778,6 @@ bool SARibbonBar::isTitleVisible() const
return d_ptr->mIsTitleVisible;
}

/**
@brief 设置允许用户自定义AccessBar的icon size
若设置为true此时用户调用AccessBar的setIconSize是可接受的,否则iconsize大小将由SARibbonBar计算
默认为false
@param
*/
void SARibbonBar::setEnableUserDefineAccessBarIconSize(bool on)
{
d_ptr->mEnableUserDefineAccessBarIconSize = on;
if (!(d_ptr->mEnableUserDefineAccessBarIconSize)) { // 允许用户自定义AccessBar的IconSize就不进入此条件重置大小
// 变更iconsize
QSize btnIconSize = PrivateData::calcIconSizeByHeight(titleBarHeight());
if (btnIconSize.height() != d_ptr->mQuickAccessBar->itemHeight()) {
d_ptr->mQuickAccessBar->setItemHeight(btnIconSize.height());
}
}
}

/**
@brief 是否允许用户自定义AccessBar的icon size
@return
*/
bool SARibbonBar::isEnableUserDefineAccessBarIconSize() const
{
return d_ptr->mEnableUserDefineAccessBarIconSize;
}

/**
@brief 是否允许用户自定义RightBar的icon size
若设置为true此时用户调用RightBar的setIconSize是可接受的,否则iconsize大小将由SARibbonBar计算
默认为false
@param on
*/
void SARibbonBar::setEnableUserDefineRightBarIconSize(bool on)
{
d_ptr->mEnableUserDefineRightBarIconSize = on;
// 变更iconsize
if (!(d_ptr->mEnableUserDefineRightBarIconSize)) {
QSize btnIconSize = PrivateData::calcIconSizeByHeight(titleBarHeight());
if (btnIconSize.height() != d_ptr->mRightButtonGroup->itemHeight()) {
d_ptr->mRightButtonGroup->setItemHeight(btnIconSize.height());
}
}
}

/**
@brief 是否允许用户自定义RightBar的icon size
@return
*/
bool SARibbonBar::isEnableUserDefineRightBarIconSize() const
{
return d_ptr->mEnableUserDefineRightBarIconSize;
}

/**
@brief 设置上下文标签的颜色列表
Expand Down Expand Up @@ -2127,11 +2056,10 @@ void SARibbonBar::paintInLooseStyle()
titleRegion.setRect(d_ptr->mQuickAccessBar->geometry().right() + 1,
border.top(),
width() - d_ptr->mIconRightBorderPosition - border.right()
- d_ptr->mWindowButtonSize.width() - d_ptr->mQuickAccessBar->geometry().right() - 1,
- d_ptr->mWindowButtonSize.width() - d_ptr->mQuickAccessBar->geometry().right() - 1,
titleBarHeight());
} else {
int leftwidth = contextCategoryRegion.x() - d_ptr->mQuickAccessBar->geometry().right()
- d_ptr->mIconRightBorderPosition;
int leftwidth = contextCategoryRegion.x() - d_ptr->mQuickAccessBar->geometry().right() - d_ptr->mIconRightBorderPosition;
int rightwidth = width() - contextCategoryRegion.y() - d_ptr->mWindowButtonSize.width();
// if (width() - contextCategoryRegion.y() > contextCategoryRegion.x()-x) {
if (rightwidth > leftwidth) {
Expand Down Expand Up @@ -2609,7 +2537,7 @@ QDebug operator<<(QDebug debug, const SARibbonBar& ribbon)
<< "\n -mEnableShowPannelTitle=" << ribbon.d_ptr->mEnableShowPannelTitle //
<< "\n -mWindowButtonSize=" << ribbon.d_ptr->mWindowButtonSize //
<< "\n -mIconRightBorderPosition=" << ribbon.d_ptr->mIconRightBorderPosition //
;
;

return debug;
}
Expand Down
12 changes: 1 addition & 11 deletions src/SARibbonBar/SARibbonBar.h
Original file line number Diff line number Diff line change
Expand Up @@ -206,9 +206,7 @@ class SA_RIBBON_EXPORT SARibbonBar : public QMenuBar
void removeCategory(SARibbonCategory* category);

// 添加一个上下文标签
SARibbonContextCategory* addContextCategory(const QString& title,
const QColor& color = QColor(),
const QVariant& id = QVariant());
SARibbonContextCategory* addContextCategory(const QString& title, const QColor& color = QColor(), const QVariant& id = QVariant());
void addContextCategory(SARibbonContextCategory* context);

// 显示一个上下文标签
Expand Down Expand Up @@ -340,14 +338,6 @@ class SA_RIBBON_EXPORT SARibbonBar : public QMenuBar
void setTitleVisible(bool on = false);
bool isTitleVisible() const;

// 允许用户自定义AccessBar图标尺寸,默认为false
void setEnableUserDefineAccessBarIconSize(bool on = true);
bool isEnableUserDefineAccessBarIconSize() const;

// 允许用户自定义RightBar图标尺寸,默认为false
void setEnableUserDefineRightBarIconSize(bool on = true);
bool isEnableUserDefineRightBarIconSize() const;

// 上下文标签的颜色列表,上下文标签显示的时候,会从颜色列表中取颜色进行标签的渲染
void setContextCategoryColorList(const QList< QColor >& cls);
QList< QColor > contextCategoryColorList() const;
Expand Down
Loading

0 comments on commit 079b303

Please sign in to comment.