I've a QTabWidget
, which contains widgets of different heights (their widths are fixed), however, the default implementation ofQTabWidget
selects the biggest widget's height as own height.
What I would like to know if there's a (possible fast) way to change the size of QTabWidget
depending on its current tab, to save space when smaller tabs are shown.
You can set the size policy of the widget that is displayed to QSizePolicy::Preferred
and the other ones to QSizePolicy::Ignored
. After that call adjustSize
to update the sizes. For example you can connect the currentChanged
signal of the QTabWidget
to a slot :
connect(ui->tabWidget,SIGNAL(currentChanged(int)),this, SLOT(updateSizes(int)));
And set size policies and adjust sizes accordingly in the slot :
void MainWindow::updateSizes(int index)
{
for(int i=0;i<ui->tabWidget->count();i++)
if(i!=index)
ui->tabWidget->widget(i)->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
ui->tabWidget->widget(index)->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
ui->tabWidget->widget(index)->resize(ui->tabWidget->widget(index)->minimumSizeHint());
ui->tabWidget->widget(index)->adjustSize();
resize(minimumSizeHint());
adjustSize();
}