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

新手上路,请多包涵

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

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

 MyCustomWidget *myCustomWidget = new MyCustomWidget(this);
ui->myTabWidget->addTab(myCustomWidget, "New Tab");

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

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

注 1 :我的小部件( MyCustomWidget )具有固定大小。

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

原文由 KelvinS 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

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

 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");

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

原文由 KelvinS 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 Philippe Bourrez 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题