Стиль QScrollBar для QTreeWidget

Никак не могу задать свой стиль скроллинга для QTreeWidget, к примеру схожий код отлично работает в QTableWidget или QPlainTextEdit а вот QTreeWidget вообще ни как не реагирует на код QSS, даже ошибок не дает.
Qt6 Linux

Что я делаю не так?

QScrollBar:vertical 
{
    border: 1px solid rgb(229, 229, 229);
    background-color: rgb(240, 240, 240);
    width: 15px;
    margin: 21px 0 21px 0;
}
QScrollBar::handle:vertical 
{
    background-color: rgb(200, 200, 200);
    min-height: 25px;
}
QScrollBar::add-line:vertical 
{
    border: 1px solid grey;
    background-color: rgb(241, 241, 241);
    height: 20px;
    subcontrol-position: bottom;
    subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical 
{
    border: 1px solid grey;
    background-color: rgb(241, 241, 241);
    height: 20px;
    subcontrol-position: top;
    subcontrol-origin: margin;
}

QScrollBar:horizontal 
{
    border: 1px solid rgb(229, 229, 229);
    background-color: rgb(240, 240, 240);
    height: 15px;
    margin: 0px 20px 0 20px;
} 
QScrollBar::handle:horizontal 
{
    background-color: rgb(200, 200, 200);
    min-width: 10px;
} 
QScrollBar::add-line:horizontal 
{
    border: 1px solid grey;
    background-color: rgb(240, 240, 240);
    width: 20px;
    subcontrol-position: right;
    subcontrol-origin: margin;
} 
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal 
{
    background: none;
} 
QScrollBar::right-arrow:horizontal 
{
    image: url(path/arrow-right-down.png);
    background: none;
} 
QScrollBar::right-arrow:horizontal:pressed 
{ 
    image: url(path/arrow-right-up.png);
    background: none;
} 
QScrollBar:left-arrow:horizontal 
{
    image: url(path/arrow-left-down.png);background: none;
} 
QScrollBar:left-arrow:horizontal:pressed 
{
    image: url(path/arrow-left-up.png);
    background: none;
} 
QScrollBar::sub-line:horizontal 
{
    border: 1px solid grey;
    background-color: rgb(240, 240, 240);
    width: 20px;
    subcontrol-position: left;
    subcontrol-origin: margin;
}

После вставки кода S. Nick ни чего не изменилось

введите сюда описание изображения


Ответы (2 шт):

Автор решения: S. Nick

Что я делаю не так?

  1. Вы не предоставляете минимально-воспроизводимый пример, который демонстрирует проблему.
  2. Вы не показываете на изображении как отлично работает QTableWidget или QPlainTextEdit с вашими стилями, и как QTreeWidget вообще ни как не реагирует на код QSS.

Sorry, я не проверял ваши стили. Я публикую свои стили, которые работают одинаково со всеми виджетами.


Stylesheet = '''
QScrollBar:horizontal {
    height: 15px;
    margin: 3px 15px 3px 15px;
    border: 1px transparent #2A2929;
    border-radius: 4px;
    background-color: yellow;    
}
QScrollBar::handle:horizontal {
    background-color: blue;      
    min-width: 5px;
    border-radius: 4px;
}
QScrollBar::add-line:horizontal {
    margin: 0px 3px 0px 3px;
    border-image: url(./images/right_arrow_disabled.png);       
    width: 10px;
    height: 10px;
    subcontrol-position: right;
    subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal {
    margin: 0px 3px 0px 3px;
    border-image: url(./images/left_arrow_disabled.png);        
    height: 10px;
    width: 10px;
    subcontrol-position: left;
    subcontrol-origin: margin;
}
QScrollBar::add-line:horizontal:hover,QScrollBar::add-line:horizontal:on {
    border-image: url(./images/right_arrow.png);               
    height: 10px;
    width: 10px;
    subcontrol-position: right;
    subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal:hover, QScrollBar::sub-line:horizontal:on {
    border-image: url(./images/left_arrow.png);               
    height: 10px;
    width: 10px;
    subcontrol-position: left;
    subcontrol-origin: margin;
}
QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal {
    background: none;
}
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
    background: none;
}
 
QScrollBar:vertical {
    background-color: #2A2929;
    width: 15px;
    margin: 15px 3px 15px 3px;
    border: 1px transparent #2A2929;
    border-radius: 4px;
}
QScrollBar::handle:vertical {
    background-color: red;         
    min-height: 25px;
    border-radius: 4px;
}
QScrollBar::sub-line:vertical {
    margin: 3px 0px 3px 0px;
    border-image: url(./images/up_arrow_disabled.png);        
    height: 10px;
    width: 10px;
    subcontrol-position: top;
    subcontrol-origin: margin;
}
QScrollBar::add-line:vertical {
    margin: 3px 0px 3px 0px;
    border-image: url(./images/down_arrow_disabled.png);       
    height: 10px;
    width: 10px;
    subcontrol-position: bottom;
    subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical:hover,QScrollBar::sub-line:vertical:on {
    border-image: url(./images/up_arrow.png);                 
    height: 10px;
    width: 10px;
    subcontrol-position: top;
    subcontrol-origin: margin;
}
QScrollBar::add-line:vertical:hover, QScrollBar::add-line:vertical:on {
    border-image: url(./images/down_arrow.png);                
    height: 10px;
    width: 10px;
    subcontrol-position: bottom;
    subcontrol-origin: margin;
}
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {
    background: none;
}
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
    background: none;
}
'''

введите сюда описание изображения

→ Ссылка
Автор решения: Сергей Т

Вот эта гадость отключала все стили после нее, без сообщения об ошибки

QTreeWidget::item(1) 
{
    border: 0px;
    padding-left: auto;
    padding-right: auto;
}
→ Ссылка