在过去的两天里,我已经看过并尝试了各种QT scrollArea解决方案,但是没有一个对我有用。这是我在MainWindow构造函数中的滚动区域设置代码。这将生成并运行没有错误,但不会执行任何操作。已经使用QTcreator在表单中设置了 scrollArea 和 ui-> Contents ,并且所需的小部件已移至scrollArea中。
ui->scrollArea->installEventFilter(this);
ui->scrollArea->setMouseTracking(true);
ui->scrollArea->setWidget(ui->Contents);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->setSizeConstraint(QLayout::SetMinimumSize);
ui->scrollArea->setLayout(layout);
最后一行似乎可以与以下内容互换:
布局-> addWidget(ui-> scrollArea)
但没有人更改结果,这是一个功能齐全的应用程序,但没有我需要的滚动区域。
答案 0 :(得分:1)
我也遇到了类似的问题,我通过创建scrollArea
来解决它,它的内容是通过代码而不是表单,然后才使用setWidget()
方法。我在this thread中描述了问题。
在您的情况下,代码应如下所示:
QScrollArea *scrollArea;
scrollArea = new QScrollArea(this);
scrollArea->installEventFilter(this);
scrollArea->setMouseTracking(true);
scrollArea->setWidget(Contents);//whatever Contents is, i recommend creating it via code
QVBoxLayout *layout = new QVBoxLayout(this);
layout->setSizeConstraint(QLayout::SetMinimumSize);
scrollArea->setLayout(layout);