Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

QTabWidget tabPosition when using stylesheets

I'm currently using stylesheets to theme an application. Here is the stylesheet I use for QTabWidget:

/*QTabBar et QTabWidget*/
QTabBar::tab {
    background: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(73, 73, 74, 255), stop:1 rgba(40, 40, 40, 255));
    border: 1px solid rgb(190, 190, 190);
    max-height: 0.6em;
    min-width: 0.6em;
    padding: 5px;
    margin-left: -1px;
    margin-right: -1px;
}
QTabBar::tab:selected, QTabBar::tab:hover {
    background: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(39, 117, 219, 255), stop:1 rgba(107, 171, 249, 255));
}


QTabBar::tab:last {
    border-top-right-radius: 3px;
    border-bottom-right-radius: 3px;
    margin-right: 0px;
}

QTabBar::tab:first {
    border-top-left-radius: 3px;
    border-bottom-left-radius: 3px;
    margin-left: 0px;
}

QTabBar::tab:only-one {
    border-radius: 3px;
    margin: 0px;
}

With this, when tabPosition is set to North or South, no problem. But with East or West, the TabBar's border is not properly styled.

Do someone know how to style a TabBar with tabPosition set to east/west?

like image 801
X99 Avatar asked Dec 06 '25 01:12

X99


1 Answers

From the Qt stylesheet reference page:

The :top, :left, :right, :bottom pseudo states depending on the orientation of the tabs.

So, for example, to apply your first css rule to the horizontal QTabBars:

QTabBar::tab:top, QTabBar::tab:bottom {
    background: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(73, 73, 74, 255), stop:1 rgba(40, 40, 40, 255));
    border: 1px solid rgb(190, 190, 190);
    max-height: 0.6em;
    min-width: 0.6em;
    padding: 5px;
    margin-left: -1px;
    margin-right: -1px;
}
like image 102
alexisdm Avatar answered Dec 07 '25 15:12

alexisdm



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!