Reputation: 29
I am currently developing a GUI using Qt6. I want to create a custom vertical slider using stylesheets. I want the bottom part of the slider, right below the handle, have a different color, but when I try to manipulate the "add-page" section of the slider's stylesheet, the width is not constant anymore and it looks like this:
I expect the width of the groove area of the slider to stay the same, on top and below the handle. Here's my code so far:
QSlider:vertical
{
min-height: 100px;
min-width: 20px;
background: none;
}
QSlider::groove:vertical
{
background: rgb(43, 43, 43);
border: 1px solid rgb(43, 43, 43);
border-radius: 2px;
width: 4px;
margin: 0px 17px;
}
QSlider::handle:vertical
{
background: white;
border: 1px solid white;
border-radius: 3px;
top: 14px;
bottom: 14px;
margin: -15px -7px;
min-width: 30px;
min-height: 30px;
}
QSlider::add-page:vertical
{
background: white;
}
When I remove the add-page section from the stylesheet, the slider looks like this:
As you can see, the bottom part is not white anymore, but the width does look nice now.
Upvotes: 0
Views: 151
Reputation: 3974
Move the definition of your margin so it affects the groove
and the add-page
together (and the sub-page if you want).
The gist of it, where I put the bottom part red to make the difference with the handle visible, is:
QSlider::groove:vertical,
QSlider::add-page:vertical
{
margin:0px 17px;
}
QSlider::add-page:vertical
{
background-color: red;
}
And the complete stylesheet based on the one in your question:
QSlider:vertical
{
min-height: 100px;
min-width: 20px;
background: none;
}
QSlider::groove:vertical
{
background: rgb(43, 43, 43);
border: 1px solid rgb(43, 43, 43);
border-radius: 2px;
width: 4px;
}
QSlider::handle:vertical
{
background: white;
border: 1px solid white;
border-radius: 3px;
top: 14px;
bottom: 14px;
margin: -15px -7px;
min-width: 30px;
min-height: 30px;
}
QSlider::groove:vertical,
QSlider::add-page:vertical
{
margin:0px 17px;
}
QSlider::add-page:vertical
{
background-color: red;
}
Upvotes: 1