QTabWidget 不考虑布局间距

QTabWidget does not respect spacing from layout

我有这个测试用例:

// Scroll
QScrollArea *sa = new QScrollArea(ui->centralWidget);
sa->setWidgetResizable( true );

// Layout for widgets
QVBoxLayout *vl_2 = new QVBoxLayout();
vl_2->setSpacing(0);

// Widget to attach the scroll to and the layout
QWidget *widget = new QWidget()
widget->setLayout(vl_2);
sa->setWidget(widget);

// Test widgets
QComboBox *cb_1 = new QComboBox();
QComboBox *cb_2 = new QComboBox();
vl_2->addWidget( cb_1 );
vl_2->addWidget( cb_2 );

并且小部件之间有 0 space。

但是如果我将它们添加到 QTabWdiget 中,一切都会中断,就好像 QTabWidget 不遵守集合 setSpacing(0);

// TabWidget
QTabWidget *run_results = new QTabWidget(ui->centralWidget);
run_results->resize( this->size().width() -20, this->size().height() -80 );
run_results->show();

// Scroll
QScrollArea *sa = new QScrollArea(ui->centralWidget);
sa->setWidgetResizable( true );

// Layout for widgets
QVBoxLayout *vl_2 = new QVBoxLayout();
vl_2->setSpacing(0);

// Widget to attach the scroll to and the layout
QWidget *widget = new QWidget()
widget->setLayout(vl_2);
sa->setWidget(widget);

// Add the scroll to as the TabWidget tab.
run_results->addTab(sa, "test");

// Test widgets
QComboBox *cb_1 = new QComboBox();
QComboBox *cb_2 = new QComboBox();
vl_2->addWidget( cb_1 );
vl_2->addWidget( cb_2 );

任何人都知道我需要做什么来强制 QTabWidget 不调整和移动我的小部件,以便它们占用所有 space?

我尝试将 Qt::AlignTop 添加到 addWdiget,但除了将第一个小部件放在屏幕顶部,将下一个小部件放在屏幕中间外,它什么也没做。

我知道我错在哪里了。

在第一种情况下,我将滚动区域作为子小部件添加到中央小部件。在第二个示例中,我将滚动区域添加为 centralwidget,将其扩展到整个 tabwidget。

我解决了第二种情况,首先添加一个 holder QWidget 作为 tabwidget,然后将 scrollarea 作为 sub-widget 添加到它。