2011-02-27 108 views
6

我在子类QTabWidget添加QTabBar,谁的选项卡伸展在tabBar的整个宽度。因此,我将扩展属性设置为true。这似乎没有改变任何关于标签的行为。在QTabBar中Qt4扩展选项卡

有没有人遇到同样的问题?我结合使用Qt 4.6与

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

编辑:已经解决了,这里是我是如何实现它,如果有人有兴趣:

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); 
} 

回答

3

QTabBar源代码:

// ... 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). 

为了解决这个“功能”,你可以使用一个QTabBar来创建你自己的选项卡控件,。

+1

谢谢,这个伎俩。我想知道,为什么这条信息从未将其写入在线文档中。 – user636530 2011-03-04 19:59:49

0

大厦@baysmith's answer,更简单的方法来强制QTabWidgetQTabBar扩大,是设置在你的QTabWidget样式表看起来是这样的:

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

或者其他大的离谱号码。如果您QTabWidget有标签会垂直而非水平,使用“高度”来代替:

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

这似乎很好地工作对我来说,使用Qt 5.0.1。选项卡展开以填充空间,每个选项获得相同的部分。但是,无论如何,他们似乎都有意为一个选项卡留出足够的空白空间。但其余的空间是根据需要填充的。空的空间可能被保留用于撕/滚动按钮,因此添加了太多的标签 - 但我不确定。

0

5.2.0起

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

它将工作。无需使用任何组合。你可以使用QTabWidget。丹尼尔答对了。