QTabWidget不尊重与布局的间距



我有这个测试用例:

// 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。

但是,如果我将它们添加到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不调整和移动我的小部件,从而占用所有空间吗?

我试图将Qt::AlignTop添加到addWdiget中,但它只是将第一个小部件放在屏幕的顶部,将下一个小部件放置在屏幕的中间。

我知道哪里出了问题。

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

我解决了第二种情况,首先添加一个holder QWidget作为tabwidget,然后添加滚动区域作为其子widget

相关内容

  • 没有找到相关文章

最新更新