Заголовки QTabBar и стилевое оформление в QProxyStyle
Столкнулся с необходимостью создать на форме TabWidget вкладки которых должны быть по вертикали,
но с заголовками по горизонтали.
Реализовал при помощи QProxyStyle
class CustomTabProxyStyle : public QProxyStyle {
public:
virtual QSize sizeFromContents(QStyle::ContentsType ctype, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const override
{
QSize s = QProxyStyle::sizeFromContents(ctype, option, contentsSize, widget);
if (ctype == QStyle::CT_TabBarTab){
s.transpose();
}
return s;
}
virtual void drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
{
if (element == CE_TabBarTabLabel) {
if (const QStyleOptionTab* tab = qstyleoption_cast<const QStyleOptionTab*>(option)) {
QStyleOptionTab opt(*tab);
opt.shape = QTabBar::RoundedNorth;
QProxyStyle::drawControl(element, &opt, painter, widget);
return;
}
}
QProxyStyle::drawControl(element, option, painter, widget);
}
};
... добавление вкладок
QTabWidget* theTabWidget = new QTabWidget();
theTabWidget->tabBar()->setStyle(new CustomTabProxyStyle());
for (int i = 0; i < 5; ++i)
theTabWidget->addTab(new QWidget(), QString("Tab %1").arg(i + 1));
theTabWidget->setTabPosition(QTabWidget::West);
this->layout()->addWidget(theTabWidget);
... но возникла проблема.
Суть проблемы заключается в том, что при загрузке приложения устанавливается стиль в main.cpp
a.setStyleSheet(QString(""
"/* --------------------- QTabBar --------------------- */"
"QTabBar::tab"
"{"
"background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);"
"border: 2px solid #C4C4C3;" //1px inset gray;
"border-bottom-color: #C2C7CB;"
"border-top-left-radius: 5px; "
"border-top-right-radius: 5px; "
"min-width: 10ex; "
"padding-top: 1px;"
"padding-right: 8px;"
"padding-left: 8px;"
"padding-bottom: 1px;"
"}"));
Заголовки вкладок устанавливаются по горизонтали только в том случае если код вышеуказанного стиля закомментирован .
Подскажите как быть в данной ситуации ?