2015-03-06 3 views
0

У меня есть тестовый случай: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, но он не сделал ничего, кроме размещения первого виджета наверху и следующего в середине экрана.

ответ

0

Я понимаю, где я ошибся.

В первом случае я добавляю свой scrollarea в качестве виджета в центральный виджет. Во втором примере я добавляю scrollarea в качестве центрального виджета, который расширяет его до всего tabwidget.

Я разрешил второй случай, сначала добавив держатель QWidget в качестве вкладки, а затем добавив прокрутку в качестве субвизлы к ней.