QT QVBoxLayout确定/设置滚动的可见区域

时间:2012-11-27 21:57:43

标签: c++ qt user-interface scrollbar boxlayout

我有一个QVBoxLayout,其内容足够宽,需要水平滚动条。我希望能够通过代码设置可视区域(实际上相当于通过滚动条滚动)。

documentation中的任何内容都没有让我能够做到这一点 - 我也无法轻易找到检索滚动条的方法并直接修改它。

如何修改内容大于布局大小的QVBoxLayout的查看区域?

1 个答案:

答案 0 :(得分:0)

QVBoxLayout不提供任何滚动功能,因此QScrollArea可能是最简单的解决方案(如建议的那样)。它可能没有您想象的那么困难。

幸运的是,滚动区域相当容易使用。这是一个简单的示例,它使用水平滚动条在滚动区域中包装另一个小部件:

#include <QApplication>
#include <QLabel>
#include <QScrollArea>
#include <QVBoxLayout>
#include <QWidget>

int main(int argc, char** argv)
{
    QApplication app(argc, argv);

    // Force the label to be wide
    QLabel* label = new QLabel("this is a very long label");
    label->setMinimumWidth(300);

    QWidget* widget = new QWidget();
    QVBoxLayout* layout = new QVBoxLayout(widget);
    layout->addWidget(label);

    QScrollArea* scrollArea = new QScrollArea();
    scrollArea->setWidget(widget);

    // Force the scroll area to be smaller
    scrollArea->resize(200, 100);
    scrollArea->show();

    app.exec();
    return 0;
}

关于滚动区域的一个棘手的事情是控制它们的大小(而不是它们的内容大小)。它们定义了固定大小的提示,因此默认情况下,它们可能无法根据需要调整大小。请记住,外部滚动区域的大小提示和/或大小策略将决定它在布局中调整大小的方式。