我有一个QVBoxLayout,其内容足够宽,需要水平滚动条。我希望能够通过代码设置可视区域(实际上相当于通过滚动条滚动)。
documentation中的任何内容都没有让我能够做到这一点 - 我也无法轻易找到检索滚动条的方法并直接修改它。
如何修改内容大于布局大小的QVBoxLayout的查看区域?
答案 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;
}
关于滚动区域的一个棘手的事情是控制它们的大小(而不是它们的内容大小)。它们定义了固定大小的提示,因此默认情况下,它们可能无法根据需要调整大小。请记住,外部滚动区域的大小提示和/或大小策略将决定它在布局中调整大小的方式。