qt - 当出现滚动条时如何调整 QScrollArea 的大小(因此只需要一个滚动条)?

标签 qt qscrollarea

我有一个分割 View ,左侧有许多按钮。我将它们放入滚动条中,这样当容器布局太短时它们就不会被压扁;但我似乎只有两个选择:

1:QScrollArea不会调整 View 大小,因此当窗口太短时,垂直滚动条会导致按钮被遮挡(左右),并且水平滚动条也会出现。

2:QScrollArea 尝试调整其包含的小部件的大小(使用 setWidgetResizable(true)),但将其调整到相同的较小尺寸内,这会导致按钮上的一些文本被剪掉侧面。

Example of both behaviors that I don't want.

我想要的是 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/

相关文章:

c++ - QListWidget : Event on item click

c++ - 将 QRegExValidator 用于 QLineEdit

python - PyQt 在 QDialog 的 QScrollArea 内部绘制

Qt EnsureVisible() 在 QScrollArea 中不起作用

c++ - 滚动区域中的自定义小部件不遵守最小值?

python - 在 pyqt 中调整滚动区域大小的问题

qt - 在 ubuntu 12.04 make 找不到 Qt 库

python - 数学文本解析器 : Fit output to figsize

c++ - 将 Qt 项目文件迁移到 CMake

qt - 获取QScrollArea绝对大小