我有一个分割 View ,左侧有许多按钮。我将它们放入滚动条中,这样当容器布局太短时它们就不会被压扁;但我似乎只有两个选择:
1:QScrollArea不会调整 View 大小,因此当窗口太短时,垂直滚动条会导致按钮被遮挡(左右),并且水平滚动条也会出现。
2:QScrollArea 尝试调整其包含的小部件的大小(使用 setWidgetResizable(true)
),但将其调整到相同的较小尺寸内,这会导致按钮上的一些文本被剪掉侧面。
我想要的是 QScrollArea 保持小部件的默认大小(水平),并在认为有必要(垂直)时将其自身扩展为滚动条的大小。在这个分割 View 中,右侧有足够的空间,如果滚动区域变宽并扩大左侧,我会更喜欢。
最佳答案
我也遇到过类似的情况,通过重写后代中的 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;
}
};
关于qt - 当出现滚动条时如何调整 QScrollArea 的大小(因此只需要一个滚动条)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61096531/