【问题标题】:QScrollArea with custom QFrame带有自定义 QFrame 的 QScrollArea
【发布时间】:2017-03-19 22:54:00
【问题描述】:

我使用的是 Qt 5.8。我有我的自定义 QFrame(称为 MyQFrame),它由其他几个 QWidget 组成,并且可以(并且将)包含我的自定义 MyQFrame 的其他实例。我为 MyQFrame 设置了最小尺寸。 MyQFrame 使用 QGridLayout 作为布局。

这个MyQFrame被放置在QTabWidget的QScrollArea里面。 QScrollArea 设置为可调整大小 (setWidgetResizable(true))。在 MyQFrame 中,我尝试将大小策略设置为扩展 (setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);),但没有效果。

这是(抽象的)我创建 QTabWidget 和 QScrollArea 的方式:

QTabWidget* tabWidget = new QTabWidget();
QScrollArea* firstTab = new QScrollArea();
firstTab->setWidgetResizable(true);
tabWidget->addTab(firstTab, "first tab");
MyQFrame* myFrame1 = new MyQFrame();
firstTab->setWidget(myFrame1);
// ... adding other MyQFrames inside this one using methods in MyQFrame ...

我无法让滚动区域正常工作。而不是扩展嵌套 MyQFrames 的父母并添加滚动条是最后一个孩子被其他 MyQFrames 重叠。看起来我错过了 MyQFrames 的 setWidgetResizable 之类的东西,但这种方法只在 QScrollArea 中。我不知道我现在应该尝试什么。我对此还是很陌生。

从下图应该更清楚了。

【问题讨论】:

  • 我尝试在 MyQFrame (3000x3000) 中将最小尺寸设置为某个疯狂的值,然后出现滚动条。然而,MyQFrames 的重叠非常糟糕。

标签: c++ qt qwidget qscrollarea qframe


【解决方案1】:

正如我所说,我在 MyQFrame 中使用 QGridLayout。我必须将此布局的大小约束设置为最小大小,如下所示:layout->setSizeConstraint(QLayout::SetMinimumSize);。现在它正在按我想要的方式工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多