出现滚动条时如何调整 QScrollArea 的大小(因此只需要一个滚动条)?
How to resize QScrollArea when a scrollbar appears (so only one bar is necessary)?
我有一个拆分视图,在左侧有一些按钮。我将它们放入滚动条中,这样当容器布局太短时它们就不会被压扁;但我似乎只有两个选择:
1: QScrollArea 不调整视图大小,因此当 window 变得太短时,垂直滚动条会导致按钮被遮挡(左右)并且水平滚动条也会出现。
2:QScrollArea 尝试调整它包含的小部件的大小(使用 setWidgetResizable(true)
),但将其调整到相同的较小尺寸内,这会导致按钮上的一些文本从侧面被剪掉。
我想要的是 QScrollArea 保持小部件的默认大小(水平),并在它认为有必要(垂直)时将 ITSELF 扩展滚动条的大小。在这个拆分视图的右侧有很多 space,我希望滚动区域变宽并扩展左侧。
我遇到了类似的情况,通过重写后代中的 QScrollArea::sizeHint() 解决了这个问题。
#include <QScrollBar>
#include <QScrollArea>
class MyScrollArea : public QScrollArea
{
Q_OBJECT
public:
QSize sizeHint() const override
{
auto newSize = QScrollArea::sizeHint();
newSize.setWidth(newSize.width()
+ verticalScrollBar()->sizeHint().width());
return newSize;
}
};
我有一个拆分视图,在左侧有一些按钮。我将它们放入滚动条中,这样当容器布局太短时它们就不会被压扁;但我似乎只有两个选择:
1: QScrollArea 不调整视图大小,因此当 window 变得太短时,垂直滚动条会导致按钮被遮挡(左右)并且水平滚动条也会出现。
2:QScrollArea 尝试调整它包含的小部件的大小(使用 setWidgetResizable(true)
),但将其调整到相同的较小尺寸内,这会导致按钮上的一些文本从侧面被剪掉。
我想要的是 QScrollArea 保持小部件的默认大小(水平),并在它认为有必要(垂直)时将 ITSELF 扩展滚动条的大小。在这个拆分视图的右侧有很多 space,我希望滚动区域变宽并扩展左侧。
我遇到了类似的情况,通过重写后代中的 QScrollArea::sizeHint() 解决了这个问题。
#include <QScrollBar>
#include <QScrollArea>
class MyScrollArea : public QScrollArea
{
Q_OBJECT
public:
QSize sizeHint() const override
{
auto newSize = QScrollArea::sizeHint();
newSize.setWidth(newSize.width()
+ verticalScrollBar()->sizeHint().width());
return newSize;
}
};