【问题标题】:Scroll Area Added and Set Up but No Scrollbar Appears添加并设置了滚动区域,但没有出现滚动条
【发布时间】:2019-07-17 01:07:39
【问题描述】:

在过去的 2 天里,我已经看到并尝试了各种 QT scrollArea 解决方案,但它们都不适合我。这是我在 MainWindow 构造函数中的滚动区域设置代码。这构建并运行没有错误,但不做任何事情。 scrollAreaui->Contents 已经使用 QTcreator 设置在表单中,并且所需的小部件已移动到 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);

最后一行似乎可以与以下内容互换:

layout->addWidget(ui->scrollArea)

但没有人改变结果,这是一个功能齐全的应用程序,但没有我需要的滚动区域。

【问题讨论】:

标签: c++ qt qscrollarea


【解决方案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);

【讨论】:

  • George - 您的建议似乎让我朝着正确的方向前进,但它正在为滚动区域创建新的、最初为空的小部件,而不是合并最初使用 QTcreator 设置的现有小部件。我认为可以公平地说 QT 的不足之处在于,您在最初创建应用程序时必须考虑添加滚动区域,或者您必须在代码中重新进行操作。
  • 此时我愿意接受一个固定的垂直滚动条。我已经能够毫无问题地添加一个,但我找不到一种方法将现有的小部件与我希望能够滚动的小部件相关联。滚动条在那里并且它工作但它不滚动任何东西。如何将现有小部件连接到新的固定滚动条?
  • @DaveSieving 我认为我无法再向您指出任何内容,除非您向我提供更多代表您尝试过的代码。但我的建议保持不变 - 尽量避免使用 scrollArea 和它的内容通过表单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
相关资源
最近更新 更多