Расширяющиеся вкладки Qt4 в QTabBar - PullRequest
6 голосов
/ 27 февраля 2011

Я делю подклассы 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);
}

Ответы [ 3 ]

3 голосов
/ 01 марта 2011

Из 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.

1 голос
/ 26 июля 2014

5.2.0 и далее

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

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

0 голосов
/ 29 июня 2013

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

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

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

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

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

...