首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在QTabWidget中将布局设置为选项卡?

如何在QTabWidget中将布局设置为选项卡?
EN

Stack Overflow用户
提问于 2017-03-29 23:40:52
回答 5查看 11.4K关注 0票数 2

我已经使用Qt Design工具创建了一个QTabWidget (没有选项卡),现在我需要创建选项卡并动态添加小部件。

我可以使用以下代码创建选项卡并添加小部件:

代码语言:javascript
复制
MyCustomWidget *myCustomWidget = new MyCustomWidget(this);
ui->myTabWidget->addTab(myCustomWidget, "New Tab");

问题是,小部件停留在我的QTabWidget的左上角,但我需要将它与我的QTabWidget的中心(水平)对齐。

如何为创建的这个新选项卡设置水平布局?

注意1:我的小部件(MyCustomWidget)的大小是固定的。

注意2:我使用的是Qt 5.3。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-03-30 00:08:18

遵循@Satus的想法,我创建了一个新的QFrame,将最小大小设置为myTabWidget的大小,设置一个水平布局并在其中添加myCustomWidget,添加两个QSpacerItem (左和右):

代码语言:javascript
复制
QFrame *frame= new QFrame(this);
frame->setMinimumWidth(ui->myTabWidget->width());
frame->setMinimumHeight(ui->myTabWidget->height());

MyCustomWidget *myCustomWidget = new MyCustomWidget(frame);

QHBoxLayout *hLayout = new QHBoxLayout();

hLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Expanding));
hLayout->addWidget(myCustomWidget);
hLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Expanding));

frame->setLayout(hLayout);

ui->myTabWidget->addTab(frame, "New Tab");

它起作用了,但如果有人有更优雅的方法,请与我们分享。

票数 0
EN

Stack Overflow用户

发布于 2017-03-29 23:52:00

它将始终位于左上角。您可以在您的顶部添加另一个小部件,然后将您的小部件放在该小部件的中间,或者使您的小部件与选项卡大小相同,并将其内容放置在中间。您可以使用QWidget的setLayout方法来设置您的小部件布局。

票数 2
EN

Stack Overflow用户

发布于 2020-12-16 18:43:01

您可以使用QT designer。选择QTabWidget并使需要更改其布局的选项卡可见(并且它必须包含元素,例如QLabel等)。右键单击->布局->垂直布局问题是,在Qwidget上执行是很直观的,而您必须在QTabWidget上执行

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43098144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档