Skip to content

Commit

Permalink
[临时提交]调整按钮划分
Browse files Browse the repository at this point in the history
  • Loading branch information
czyt1988 committed Jan 16, 2024
1 parent a30b96f commit db06f69
Show file tree
Hide file tree
Showing 8 changed files with 80 additions and 74 deletions.
2 changes: 1 addition & 1 deletion src/SARibbonBar/3rdparty/qwindowkit
Submodule qwindowkit updated 61 files
+1 −1 LICENSE
+1 −4 README.md
+1 −2 examples/mainwindow/main.cpp
+1 −2 examples/mainwindow/mainwindow.cpp
+1 −2 examples/mainwindow/mainwindow.h
+1 −5 examples/qml/main.cpp
+1 −2 examples/shared/widgetframe/windowbar.cpp
+1 −2 examples/shared/widgetframe/windowbar.h
+1 −2 examples/shared/widgetframe/windowbar_p.h
+1 −2 examples/shared/widgetframe/windowbutton.cpp
+1 −2 examples/shared/widgetframe/windowbutton.h
+1 −2 examples/shared/widgetframe/windowbutton_p.h
+1 −1 qmsetup
+1 −1 share/msbuild/QWindowKit.props.in
+1 −2 src/core/contexts/abstractwindowcontext.cpp
+1 −2 src/core/contexts/abstractwindowcontext_p.h
+2 −6 src/core/contexts/cocoawindowcontext.mm
+1 −2 src/core/contexts/cocoawindowcontext_p.h
+1 −2 src/core/contexts/qtwindowcontext.cpp
+1 −2 src/core/contexts/qtwindowcontext_p.h
+1 −2 src/core/contexts/win32windowcontext.cpp
+1 −2 src/core/contexts/win32windowcontext_p.h
+5 −4 src/core/kernel/nativeeventfilter.cpp
+1 −2 src/core/kernel/nativeeventfilter_p.h
+1 −2 src/core/kernel/sharedeventfilter.cpp
+1 −2 src/core/kernel/sharedeventfilter_p.h
+1 −2 src/core/qwindowkit_linux.h
+1 −2 src/core/qwindowkit_windows.cpp
+1 −3 src/core/qwindowkit_windows.h
+1 −2 src/core/qwkglobal.h
+1 −2 src/core/qwkglobal_p.h
+2 −3 src/core/shared/qwkwindowsextra_p.h
+89 −83 src/core/shared/systemwindow_p.h
+1 −2 src/core/style/styleagent.cpp
+1 −2 src/core/style/styleagent.h
+1 −2 src/core/style/styleagent_linux.cpp
+1 −2 src/core/style/styleagent_mac.mm
+1 −2 src/core/style/styleagent_p.h
+4 −3 src/core/style/styleagent_win.cpp
+1 −2 src/core/windowagentbase.cpp
+1 −2 src/core/windowagentbase.h
+1 −2 src/core/windowagentbase_p.h
+1 −2 src/core/windowitemdelegate.cpp
+1 −2 src/core/windowitemdelegate_p.h
+1 −2 src/quick/quickitemdelegate.cpp
+1 −2 src/quick/quickitemdelegate_p.h
+1 −2 src/quick/quickwindowagent.cpp
+1 −2 src/quick/quickwindowagent.h
+1 −2 src/quick/quickwindowagent_mac.cpp
+1 −2 src/quick/quickwindowagent_p.h
+4 −5 src/quick/quickwindowagent_win.cpp
+1 −2 src/quick/qwkquickglobal.cpp
+1 −2 src/quick/qwkquickglobal.h
+1 −2 src/widgets/qwkwidgetsglobal.h
+1 −2 src/widgets/widgetitemdelegate.cpp
+1 −2 src/widgets/widgetitemdelegate_p.h
+1 −2 src/widgets/widgetwindowagent.cpp
+1 −2 src/widgets/widgetwindowagent.h
+1 −2 src/widgets/widgetwindowagent_mac.cpp
+1 −2 src/widgets/widgetwindowagent_p.h
+1 −2 src/widgets/widgetwindowagent_win.cpp
75 changes: 33 additions & 42 deletions src/SARibbonBar/SARibbonButtonGroupWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ class SARibbonButtonGroupWidget::PrivateData

public:
QList< SAPrivateRibbonButtonGroupWidgetItem > mItems; ///< 用于记录所有管理的item
int mFixheight; ///内部控件的统一高度
int mItemMargin; ///间距
int mFixheight; /// 内部控件的统一高度
int mItemMargin; /// 间距
};

SARibbonButtonGroupWidget::PrivateData::PrivateData(SARibbonButtonGroupWidget* p)
Expand Down Expand Up @@ -103,9 +103,7 @@ SARibbonButtonGroupWidget::~SARibbonButtonGroupWidget()
}
}

QAction* SARibbonButtonGroupWidget::addAction(QAction* a,
Qt::ToolButtonStyle buttonStyle,
QToolButton::ToolButtonPopupMode popMode)
QAction* SARibbonButtonGroupWidget::addAction(QAction* a, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode)
{
SARibbonPannel::setActionToolButtonStyleProperty(a, buttonStyle);
SARibbonPannel::setActionToolButtonPopupModeProperty(a, popMode);
Expand All @@ -121,10 +119,7 @@ QAction* SARibbonButtonGroupWidget::addAction(QAction* a,
* @param popMode
* @return
*/
QAction* SARibbonButtonGroupWidget::addAction(const QString& text,
const QIcon& icon,
Qt::ToolButtonStyle buttonStyle,
QToolButton::ToolButtonPopupMode popMode)
QAction* SARibbonButtonGroupWidget::addAction(const QString& text, const QIcon& icon, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode)
{
QAction* a = new QAction(icon, text, this);
addAction(a, buttonStyle, popMode);
Expand All @@ -133,8 +128,8 @@ QAction* SARibbonButtonGroupWidget::addAction(const QString& text,

QAction* SARibbonButtonGroupWidget::addMenu(QMenu* menu, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode)
{
QAction* a = menu->menuAction();
addAction(a, buttonStyle, popMode);
QAction* a = menu->menuAction();
addAction(a, buttonStyle, popMode);
return (a);
}

Expand All @@ -157,18 +152,18 @@ QAction* SARibbonButtonGroupWidget::addWidget(QWidget* w)
return (a);
}

SARibbonControlToolButton* SARibbonButtonGroupWidget::actionToRibbonControlToolButton(QAction* action)
SARibbonControlButton* SARibbonButtonGroupWidget::actionToRibbonControlToolButton(QAction* action)
{
for (auto obj : qAsConst(children())) {
if (obj->isWidgetType()) {
if (SARibbonControlToolButton* btn = qobject_cast< SARibbonControlToolButton* >(obj)) {
if (btn->defaultAction() == action) {
return btn;
}
}
}
}
return (nullptr);
for (auto obj : qAsConst(children())) {
if (obj->isWidgetType()) {
if (SARibbonControlButton* btn = qobject_cast< SARibbonControlButton* >(obj)) {
if (btn->defaultAction() == action) {
return btn;
}
}
}
}
return (nullptr);
}

QSize SARibbonButtonGroupWidget::sizeHint() const
Expand All @@ -181,29 +176,28 @@ QSize SARibbonButtonGroupWidget::minimumSizeHint() const
return (layout()->minimumSize());
}


void SARibbonButtonGroupWidget::setItemHeight(int h)
{
d_ptr->mFixheight = h;
// 迭代已经保存的button
const QObjectList& objlist = children();
for (QObject* obj : objlist) {
if (SARibbonControlToolButton* btn = qobject_cast< SARibbonControlToolButton* >(obj)) {
btn->setFixedHeight(h);
btn->setMinimumWidth(h);
}
}
d_ptr->mFixheight = h;
// 迭代已经保存的button
const QObjectList& objlist = children();
for (QObject* obj : objlist) {
if (SARibbonControlButton* btn = qobject_cast< SARibbonControlButton* >(obj)) {
btn->setFixedHeight(h);
btn->setMinimumWidth(h);
}
}
}

int SARibbonButtonGroupWidget::itemHeight() const
{
return d_ptr->mFixheight;
return d_ptr->mFixheight;
}

void SARibbonButtonGroupWidget::setItemMargin(int m)
{
d_ptr->mItemMargin = m;
layout()->setContentsMargins(0, m, 0, m);
d_ptr->mItemMargin = m;
layout()->setContentsMargins(0, m, 0, m);
}

int SARibbonButtonGroupWidget::itemMargin() const
Expand Down Expand Up @@ -232,7 +226,7 @@ void SARibbonButtonGroupWidget::actionEvent(QActionEvent* e)
if (item.widget != nullptr) {
item.widget->setAttribute(Qt::WA_LayoutUsesWidgetRect);
item.widget->show();
//widget高度保持一致
// widget高度保持一致
item.widget->setFixedHeight(d_ptr->mFixheight);
item.customWidget = true;
}
Expand All @@ -242,14 +236,11 @@ void SARibbonButtonGroupWidget::actionEvent(QActionEvent* e)
}
// 不是widget,自动生成ButtonTyle
if (!item.widget) {
// 只使用small
SARibbonToolButton::RibbonButtonType buttonType = SARibbonToolButton::SmallButton;
SARibbonControlToolButton* button = RibbonSubElementFactory->createRibbonControlToolButton(this);
SARibbonControlButton* button = RibbonSubElementFactory->createRibbonControlButton(this);
button->setAutoRaise(true);
button->setFixedHeight(d_ptr->mFixheight);
button->setMinimumWidth(d_ptr->mFixheight);
button->setFocusPolicy(Qt::NoFocus);
button->setButtonType(buttonType);
button->setDefaultAction(item.action);
// 属性设置
QToolButton::ToolButtonPopupMode popMode = SARibbonPannel::getActionToolButtonPopupModeProperty(item.action);
Expand All @@ -258,8 +249,8 @@ void SARibbonButtonGroupWidget::actionEvent(QActionEvent* e)
button->setToolButtonStyle(buttonStyle);
// 根据QAction的属性设置按钮的大小

QObject::connect(button, &SARibbonToolButton::triggered, this, &SARibbonButtonGroupWidget::actionTriggered);
item.widget = button;
QObject::connect(button, &SARibbonToolButton::triggered, this, &SARibbonButtonGroupWidget::actionTriggered);
item.widget = button;
}
layout()->addWidget(item.widget);
d_ptr->mItems.append(item);
Expand Down
23 changes: 12 additions & 11 deletions src/SARibbonBar/SARibbonButtonGroupWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <QToolButton>
#include <QMenu>
#include <QFrame>
class SARibbonControlToolButton;
class SARibbonControlButton;
/**
* @brief 用于管理一组Action,类似于QToolBar
*/
Expand All @@ -17,31 +17,32 @@ class SA_RIBBON_EXPORT SARibbonButtonGroupWidget : public QFrame
SARibbonButtonGroupWidget(QWidget* parent = Q_NULLPTR);
~SARibbonButtonGroupWidget() Q_DECL_OVERRIDE;

//生成并添加一个action
// 生成并添加一个action
QAction* addAction(QAction* a,
Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly,
Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly,
QToolButton::ToolButtonPopupMode popMode = QToolButton::DelayedPopup);
QAction* addAction(const QString& text, const QIcon& icon,
Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly,
QAction* addAction(const QString& text,
const QIcon& icon,
Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly,
QToolButton::ToolButtonPopupMode popMode = QToolButton::DelayedPopup);
QAction* addMenu(QMenu* menu,
Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly,
Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly,
QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup);
QAction* addSeparator();
QAction* addWidget(QWidget* w);
// 从ButtonGroupWidget中把action对应的button提取出来,如果action没有对应的button,就返回nullptr
SARibbonControlToolButton* actionToRibbonControlToolButton(QAction* action);
SARibbonControlButton* actionToRibbonControlToolButton(QAction* action);

QSize sizeHint() const Q_DECL_OVERRIDE;
QSize minimumSizeHint() const Q_DECL_OVERRIDE;

//设置内部控件高度
// 设置内部控件高度
void setItemHeight(int h);
int itemHeight() const;

//上下margin
void setItemMargin(int m);
int itemMargin() const;
// 上下margin
void setItemMargin(int m);
int itemMargin() const;

signals:

Expand Down
8 changes: 2 additions & 6 deletions src/SARibbonBar/SARibbonControlButton.cpp
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
#include "SARibbonControlButton.h"


SARibbonControlButton::SARibbonControlButton(QWidget *parent)
: QToolButton(parent)
SARibbonControlButton::SARibbonControlButton(QWidget* parent) : QToolButton(parent)
{
}

SARibbonControlToolButton::SARibbonControlToolButton(QWidget *parent)
: SARibbonToolButton(parent)
SARibbonControlToolButton::SARibbonControlToolButton(QWidget* parent) : QToolButton(parent)
{

}
10 changes: 5 additions & 5 deletions src/SARibbonBar/SARibbonControlButton.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@ class SA_RIBBON_EXPORT SARibbonControlButton : public QToolButton
{
Q_OBJECT
public:
SARibbonControlButton(QWidget *parent = 0);
SARibbonControlButton(QWidget* parent = 0);
};

/**
* @brief 用于SARibbonButtonGroupWidget的control button
*
* 为了防止SARibbonToolButton qss的影响,单独继承一个类
*/
class SA_RIBBON_EXPORT SARibbonControlToolButton : public SARibbonToolButton
class SA_RIBBON_EXPORT SARibbonControlToolButton : public QToolButton
{
Q_OBJECT
Q_OBJECT
public:
SARibbonControlToolButton(QWidget *parent = 0);
SARibbonControlToolButton(QWidget* parent = 0);
};

#endif // SARIBBONPANNELTOOLBUTTON_H
#endif // SARIBBONPANNELTOOLBUTTON_H
20 changes: 14 additions & 6 deletions src/SARibbonBar/SARibbonGallery.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ class SARibbonGallery::PrivateData
SA_RIBBON_DECLARE_PUBLIC(SARibbonGallery)
public:
static int sGalleryButtonMaximumWidth;
SARibbonControlButton* buttonUp { nullptr };
SARibbonControlButton* buttonDown { nullptr };
SARibbonControlButton* buttonMore { nullptr };
SARibbonGalleryButton* buttonUp { nullptr };
SARibbonGalleryButton* buttonDown { nullptr };
SARibbonGalleryButton* buttonMore { nullptr };
#if 0
SARibbonMenu *popupWidget;
#else
Expand All @@ -38,9 +38,9 @@ class SARibbonGallery::PrivateData

void init()
{
buttonUp = new SARibbonControlButton(q_ptr);
buttonDown = new SARibbonControlButton(q_ptr);
buttonMore = new SARibbonControlButton(q_ptr);
buttonUp = new SARibbonGalleryButton(q_ptr);
buttonDown = new SARibbonGalleryButton(q_ptr);
buttonMore = new SARibbonGalleryButton(q_ptr);
buttonUp->setToolButtonStyle(Qt::ToolButtonIconOnly);
buttonDown->setToolButtonStyle(Qt::ToolButtonIconOnly);
buttonMore->setToolButtonStyle(Qt::ToolButtonIconOnly);
Expand Down Expand Up @@ -121,6 +121,14 @@ class SARibbonGallery::PrivateData
*/
int SARibbonGallery::PrivateData::sGalleryButtonMaximumWidth = 15;

//===================================================
// SARibbonGalleryButton
//===================================================

SARibbonGalleryButton::SARibbonGalleryButton(QWidget* parent) : QToolButton(parent)
{
}

//===================================================
// SARibbonGalleryViewport
//===================================================
Expand Down
11 changes: 11 additions & 0 deletions src/SARibbonBar/SARibbonGallery.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,23 @@
#define SARIBBONGALLERY_H
#include "SARibbonGlobal.h"
#include <QFrame>
#include <QToolButton>
#include "SARibbonGalleryGroup.h"
#include <QSizeGrip>
class QLabel;
class QVBoxLayout;
class SARibbonGalleryViewport;

/**
* @brief 针对SARibbonGallery控件的按钮
*/
class SA_RIBBON_EXPORT SARibbonGalleryButton : public QToolButton
{
Q_OBJECT
public:
SARibbonGalleryButton(QWidget* parent = 0);
};

/**
* @brief Gallery控件
*
Expand Down
5 changes: 2 additions & 3 deletions src/SARibbonBar/SARibbonMainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ SARibbonBar* SARibbonMainWindow::createRibbonBar()

void SARibbonMainWindow::resizeEvent(QResizeEvent* event)
{
QMainWindow::resizeEvent(event);
SARibbonBar* bar = ribbonBar();
SAWindowButtonGroup* wg = d_ptr->mWindowButtonGroup;

Expand All @@ -290,7 +291,7 @@ void SARibbonMainWindow::resizeEvent(QResizeEvent* event)
}
}
QSize wgSizeHint = wg->sizeHint();
wg->setGeometry(width() - wgSizeHint.width(), 0, wgSizeHint.width(), wgSizeHint.height());
wg->setGeometry(frameGeometry().width() - wgSizeHint.width(), 0, wgSizeHint.width(), wgSizeHint.height());
}
if (bar) {
if (wg) {
Expand All @@ -300,7 +301,6 @@ void SARibbonMainWindow::resizeEvent(QResizeEvent* event)
bar->setFixedWidth(this->size().width());
}
}
QMainWindow::resizeEvent(event);
}

void SARibbonMainWindow::changeEvent(QEvent* e)
Expand Down Expand Up @@ -334,7 +334,6 @@ void SARibbonMainWindow::onPrimaryScreenChanged(QScreen* screen)
}
}


void sa_set_ribbon_theme(QWidget* w, SARibbonMainWindow::RibbonTheme theme)
{
QFile file;
Expand Down

0 comments on commit db06f69

Please sign in to comment.