gpt4 book ai didi

qt - 创建固定高度的 Qt 布局

转载 作者:行者123 更新时间:2023-12-02 11:53:47 40 4
gpt4 key购买 nike

我想创建一个包含两种布局的 Qt 窗口,一种固定高度,包含顶部的按钮列表,另一种用如下图所示的布局填充剩余空间,该布局将小部件垂直和水平居中。

Example Qt layout

我应该如何布置我的布局/小部件。我尝试了一些嵌套水平和垂直布局的选项,但没有成功

最佳答案

尝试使用 QHBoxLayout 将粉色框设为 QWidget(而不仅仅是将其设为布局)。原因是 QLayouts 不提供固定大小的功能,但 QWidgets 提供。

// first create the four widgets at the top left,
// and use QWidget::setFixedWidth() on each of them.

// then set up the top widget (composed of the four smaller widgets):
QWidget *topWidget = new QWidget;
QHBoxLayout *topWidgetLayout = new QHBoxLayout(topWidget);
topWidgetLayout->addWidget(widget1);
topWidgetLayout->addWidget(widget2);
topWidgetLayout->addWidget(widget3);
topWidgetLayout->addWidget(widget4);
topWidgetLayout->addStretch(1); // add the stretch
topWidget->setFixedHeight(50);

// now put the bottom (centered) widget into its own QHBoxLayout
QHBoxLayout *hLayout = new QHBoxLayout;
hLayout->addStretch(1);
hLayout->addWidget(bottomWidget);
hLayout->addStretch(1);
bottomWidget->setFixedSize(QSize(50, 50));

// now use a QVBoxLayout to lay everything out
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(topWidget);
mainLayout->addStretch(1);
mainLayout->addLayout(hLayout);
mainLayout->addStretch(1);

如果你真的想要有两个单独的布局 - 一个用于粉红色框,一个用于蓝色框 - 这个想法基本上是相同的,除了你将蓝色框制作成它自己的 QVBoxLayout,然后使用:

mainLayout->addWidget(topWidget);
mainLayout->addLayout(bottomLayout);

关于qt - 创建固定高度的 Qt 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007807/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com