diff --git a/src/SARibbonBar/SARibbonCategoryLayout.cpp b/src/SARibbonBar/SARibbonCategoryLayout.cpp index 4d61d98..6dfb855 100644 --- a/src/SARibbonBar/SARibbonCategoryLayout.cpp +++ b/src/SARibbonBar/SARibbonCategoryLayout.cpp @@ -440,9 +440,12 @@ void SARibbonCategoryLayout::doLayout() ++debug_i__; #endif } else { - // item->widget()->setFixedSize(item->mWillSetGeometry.size()); - // item->widget()->move(item->mWillSetGeometry.topLeft()); - item->setGeometry(item->mWillSetGeometry); + //! 这里不能用item->setGeometry(item->mWillSetGeometry);这样会得到一个很奇怪的显示效果 + //! 就是窗口的最左边不会移出去,而是把最右边压缩, + item->widget()->setGeometry(item->mWillSetGeometry); + // item->widget()->setFixedSize(item->mWillSetGeometry.size()); + // item->widget()->move(item->mWillSetGeometry.topLeft()); + // item->setGeometry(item->mWillSetGeometry); showWidgets << item->widget(); if (item->separatorWidget) { item->separatorWidget->setGeometry(item->mWillSetSeparatorGeometry); diff --git a/src/SARibbonBar/SARibbonPannelLayout.cpp b/src/SARibbonBar/SARibbonPannelLayout.cpp index d28fa2e..457cd31 100644 --- a/src/SARibbonBar/SARibbonPannelLayout.cpp +++ b/src/SARibbonBar/SARibbonPannelLayout.cpp @@ -302,7 +302,11 @@ void SARibbonPannelLayout::doLayout() if (item->isEmpty()) { hideWidgets << item->widget(); } else { - item->setGeometry(item->itemWillSetGeometry); + // 在category发现item->setGeometry有点奇怪的现象,这里统一使用item->widget->setgeo + // item->setGeometry(item->itemWillSetGeometry); + if (item->widget()) { + item->widget()->setGeometry(item->itemWillSetGeometry); + } showWidgets << item->widget(); } }