Qt4 расширение вкладок в QTabBar

Я подклассы QTabWidget добавить QTabBar, кто вкладки растягиваются по всей ширине tabBar. Поэтому я устанавливаю для свойства expanding значение true. Это, похоже, ничего не меняет в поведении вкладок.

кто-нибудь сталкивался с такой проблемой? Я использую Qt 4.6 в сочетании с

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

EDIT: было решено, вот как я его реализовал, если кому-то интересно:

    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 над виджетом с QStackedLayout.


дом на @baysmith это, более простой способ заставить QTabWidget пусть QTabBar развернуть, чтобы установить таблицу стилей на вашем QTabWidget это выглядит примерно так:

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

или другое смехотворно большое число. Если QTabWidget имеет вкладки, идущие вертикально, а не горизонтально, вместо этого используйте "высота":

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

это, кажется, отлично работает для меня, с Qt 5.0.1. Вкладки расширяются, чтобы заполнить пространство, каждый из которых получает равную часть. Тем не менее, похоже, что они намеренно оставляют достаточно свободного места для еще одной вкладки. А остальное пространство заполняется по желанию. Пустое пространство может быть зарезервировано для кнопок разрыва / прокрутки, если будет добавлено слишком много вкладок , но я не уверен.


5.2.0 года

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

Он будет работать. Нет необходимости использовать любую комбинацию. Вы можете использовать QTabWidget. Дэниел Анс прав.