2011-02-27 15 views
6

Estoy subclasificando QTabWidget para agregar QTabBar, cuyas pestañas se extienden sobre todo el ancho del tabBar. Por lo tanto, estoy configurando la propiedad en expansión como verdadera. Esto no parece cambiar nada sobre el comportamiento de las pestañas.Qt4 lengüetas de expansión en QTabBar

¿Alguien encontró el mismo problema? Yo uso de Qt 4.6 en combinación con

TabWidget::TabWidget(QWidget *parent) 
{ 
    tabBar = new QTabBar(this); 
    tabBar->setIconSize(QSize(160,160)); 
    tabBar->setExpanding(true); 
    setTabBar(tabBar); 
} 

EDIT: ha sido resuelto, aquí es cómo he implementado, por si a alguien le interesa:

tabBar = new QTabBar(this); 
    tabBar->setExpanding(true); 
    layout = new QVBoxLayout(this); 
    setLayout(layout); 
    stackedLayout = new QStackedLayout(); 
    layout->addWidget(tabBar); 
    layout->addLayout(stackedLayout); 
    connect(tabBar, SIGNAL(currentChanged(int)), stackedLayout, SLOT(setCurrentIndex(int))); 

void MainWindow::addTab(QWidget *widget, const QIcon &icon, const QString &label) { 
    tabBar->addTab(icon, label); 
    stackedLayout->addWidget(widget); 
} 

Respuesta

3

A partir del código QTabBar fuente:

// ... Since we don't set 
// a maximum size, tabs will EXPAND to fill up the empty space. 
// Since tab widget is rather *ahem* strict about keeping the geometry of the 
// tab bar to its absolute minimum, this won't bleed through, but will show up 
// if you use tab bar on its own (a.k.a. not a bug, but a feature). 

Para evitar esta "función", puede crear su propio widget de pestaña utilizando un QTabBar encima de un widget con un QStackedLayout.

+1

Gracias, eso funcionó. Me pregunto por qué esa información nunca llegó a la documentación en línea. – user636530

0

Sobre la base de @baysmith's answer, una manera más fácil para forzar la QTabWidget dejar que el QTabBar expanda, es fijar una hoja de estilo en su QTabWidget que se ve algo como esto:

QTabWidget::tab-bar { 
    width: 999999px; 
} 

U otra ridículamente gran número. Si su QTabWidget tiene las pestañas va verticalmente en lugar de horizontalmente, utilice 'altura' en su lugar:

QTabWidget::tab-bar { 
    height: 999999px; 
} 

Esto parece funcionar bien para mí, con Qt 5.0.1. Las pestañas se expanden para llenar el espacio, y cada uno obtiene una porción igual. Sin embargo, parece que intencionalmente dejan suficiente espacio vacío para una pestaña más, independientemente. Pero el resto del espacio se llena como se desee. El espacio vacío podría estar reservado para los botones de desplazamiento/desplazamiento, en caso de que se agreguen demasiadas pestañas, pero no estoy seguro.

0

5.2.0 en adelante

QTabWidget::tab-bar { 
    min-width: 999999px; 
} 

va a trabajar. No es necesario usar ninguna combinación. Puedes usar QTabWidget. Daniel ans es correcto.