为什么我的 corner-widget 没有出现在 QTabWidget 中?

Why does my corner-widget not show up in QTabWidget?

我有一个 QTabWidget,我想在右上角有 两个 按钮。 我使用此代码添加一个垂直布局作为角落小部件,并向其添加两个按钮:

QWidget* cornerWidget = new QWidget();
QVBoxLayout* vbox = new QVBoxLayout();
QPushButton* button1 = new QPushButton("Button 1");
QPushButton* button2 = new QPushButton("Button 2");

vbox->addWidget(button1);
vbox->addWidget(button2);

ui->myTabWidget->setCornerWidget(cornerWidget);
cornerWidget->setLayout(vbox);
cornerWidget->show();

但是当我 运行 我的程序时,右上角根本没有显示任何小部件。

如果我使用这个简化的代码只添加一个按钮,它会完美地工作并显示我的按钮:

QPushButton* button1 = new QPushButton("Button 1")
ui->myTabWidget->setCornerWidget(button1);

原因

角落小部件的位置受到限制。您使用垂直布局,其内容边距将按钮向下移动,看不见。

解决方案

使用水平布局并将内容边距设置为 0

例子

这是我为您编写的示例,用于演示如何实施建议的解决方案:

auto *cornerWidget = new QWidget(this);
auto *hbox = new QHBoxLayout(cornerWidget);
auto *button1 = new QPushButton(tr("Button 1"), this);
auto *button2 = new QPushButton(tr("Button 2"), this);

hbox->addWidget(button1);
hbox->addWidget(button2);
hbox->setContentsMargins(0, 0, 0, 0);

ui->myTabWidget->setCornerWidget(cornerWidget);

结果

给出的示例产生以下结果: