6

我正在子类化QTabWidget以添加一个QTabBar,谁的标签延伸到整个宽度tabBar。因此,我将扩展属性设置为 true。这似乎并没有改变选项卡的行为。

有没有人遇到同样的问题?我将 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);
}
4

3 回答 3

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带有QStackedLayout.

于 2011-03-01T16:04:40.613 回答
1

5.2.0 以上

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

它会起作用的。无需使用任何组合。您可以使用 QTabWidget。丹尼尔回答是正确的。

于 2014-07-26T12:28:03.213 回答
0

基于@baysmith 的回答QTabWidget,一种更简单的强制QTabBar扩展的方法是在你的样式表上设置一个QTabWidget看起来像这样的样式表:

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

或者另一个可笑的大数字。如果您QTabWidget的标签垂直而不是水平,请改用“高度”:

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

使用 Qt 5.0.1,这对我来说似乎很好用。选项卡扩展以填充空间,每个选项卡都获得相等的部分。但是,无论如何,他们似乎故意为另一个选项卡留出足够的空白空间。但是其余的空间是根据需要填充的。可能会为撕裂/滚动按钮保留空白空间,以防添加太多选项卡 - 但我不确定。

于 2013-06-29T03:39:01.583 回答