在Qt中将一个小部件居中放置在另一个小部件内

4

我想把一个QWidget置于QTabWidget中央,当QWidget的大小改变时始终保持居中。

如何做到这一点?


1
在布局中四周添加间距。 - Nicolas Holthaus
1
@NicolasHolthaus,目前没有支持这种组合的布局。只需添加2个间隔器并将其余维度的小部件大小策略设置为最大即可。或者像您建议的那样,结合垂直+水平布局和4个空格 :) - Dmitry Sazonov
1
@SaZ 在Qt中有一个网格布局,提供了这个功能。 - Paraboloid87
你是从代码还是从Qt设计师创建小部件? - Paraboloid87
我通过使用布局对齐解决了这个问题。现在我的小部件已经对齐,但无法再进行调整大小了。它有一个固定的最小尺寸,我将其定义为600X600。我该如何重新启用调整大小功能? - Onur Tuna
那么,请设置适当的大小策略。很可能您希望在两个方向上都使用“最小扩展”。 - Kuba hasn't forgotten Monica
1个回答

6

1/ 在你的QTabWidget中创建一个布局:例如QBoxLayout

2/ 将你的QWidget放入其中,并设置所需的对齐方式。

QTabWidget* tabwid = new QTabWidget(this);
QBoxLayout* layout = new QBoxLayout(QBoxLayout::LeftToRight, tabwid);
//if you want to set margins : layout->setContentsMargins(5, 5, 5, 5); 
QWidget* widget = new QWidget();
layout->addWidget(widget, Qt::AlignCenter); // center alignment

1
没错!任何布局都可以。 - Kuba hasn't forgotten Monica
addWidget()的语法不正确,因为addWidget()的第二个参数是stretch,而不是对齐方式。正确的写法应该是layout->addWidget(widget, 0, Qt::AlignCenter); - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接