На мой взгляд, у вас есть два варианта, в зависимости от того, что вы хотите сделать.
Для заливки фона цветом:
Воспользуйтесь прозрачностью этой части виджета со вкладками.
QWidget *bg = new QWidget( parent );
bg->setAutoFillBackground( true );
QPalette bg_palette = bg->palette();
bg_palette.setColor( QPalette::Window, QColor( "orange" ) );
bg->setPalette( bg_palette );
QHBoxLayout layout = new QHBoxLayout();
layout->setMargin( 0, 0, 0, 0 );
layout->setSpacing( 0 );
bg->setLayout( layout );
QTabWidget *tab_widget = new QTabWidget();
// set up tab_widget however you want...
layout->addWidget( tab_widget );
Это делает виджет bg полностью оранжевым, но поскольку большая часть виджета со вкладками будет рисоваться поверх виджета bg, вы увидите только тот оранжевый цвет, где виджет со вкладками не рисует.
Чтобы развернуть вкладки:
Я думал, что это будет проще, чем есть, но вам, в основном, нужно создать подкласс QTabWidget, чтобы получить доступ к используемому виджету панели вкладок.
class ExpandableTabWidget : public QTabWidget
{
Q_OBJECT;
Q_PROPERTY( bool expanding_tabs READ Expanding WRITE SetExpanding );
public:
ExpandableTabWidget( QWidget *parent = NULL ) : QTabWidget( parent )
{
}
bool Expanding() const
{
return tabBar()->expanding();
}
void SetTabsExpanding( bool expanding = true )
{
tabBar()->setExpanding( expanding );
}
};
Затем вам нужно будет либо превратить ваш класс ExpandableTabWidget
в плагин и использовать его в конструкторе, либо вы можете добавить виджет вкладки в тип ExpandableTabWidget
и установить расширяющее значение в коде. Если вы решите сделать повышение, вы не увидите желаемых результатов в конструкторе, но вы увидите их при запуске программы.