QTabWidget不考虑布局的间距

时间:2015-03-06 12:21:36

标签: qt qt5 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,但除了将第一个小部件放在屏幕中间的顶部和下一个小部件外,它什么也没做。

1 个答案:

答案 0 :(得分:0)

我明白我哪里出错了。

在第一种情况下,我将我的scrollarea作为子窗口小部件添加到centralwidget。在第二个例子中,我将scrollarea添加为centralwidget,将其扩展为整个tabwidget。

我通过首先添加一个holder QWidget作为tabwidget然后将scrollarea添加为子窗口小部件来解决第二种情况。