gpt4 book ai didi

c++ - 刻度线在样式 QSlider 上消失

转载 作者:行者123 更新时间:2023-12-01 14:19:21 26 4
gpt4 key购买 nike

我正在使用 Qt 5.3 并尝试设置 QSlider 的样式.但是,当我应用样式表时,刻度线消失了。有谁知道如何在不影响刻度线的情况下保持样式?

这是样式表:

QSlider::groove:horizontal
{
border: 1px inset #B0B0B0;
background-color: #EAEAEA;
height: 2px;
}

QSlider::Handle
{
border: 1px solid black;
background: #B0B0B0;
background-image: url(:/metal_background_small);
width: 12px;
margin: -8px 0;
}

QSlider::Handle:Hover
{
border: 1px solid black;
background: #707070;
background-image: url(:/metal_background_small);
}

QSlider::sub-page
{
/* margin: 7px 1px 7px 0px;*/
height: 2px;
background: #05bcfe;
}

最佳答案

Qt 样式表和刻度线不能很好地配合使用。最简单的解决方案是子类化 QSlider并重新实现paint_event。

virtual void paintEvent(QPaintEvent *ev)
{

QStylePainter p(this);
QStyleOptionSlider opt;
initStyleOption(&opt);

QRect handle = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);

// draw tick marks
// do this manually because they are very badly behaved with style sheets
int interval = tickInterval();
if (interval == 0)
{
interval = pageStep();
}

if (tickPosition() != NoTicks)
{
for (int i = minimum(); i <= maximum(); i += interval)
{
int x = round((double)((double)((double)(i - this->minimum()) / (double)(this->maximum() - this->minimum())) * (double)(this->width() - handle.width()) + (double)(handle.width() / 2.0))) - 1;
int h = 4;
p.setPen(QColor("#a5a294"));
if (tickPosition() == TicksBothSides || tickPosition() == TicksAbove)
{
int y = this->rect().top();
p.drawLine(x, y, x, y + h);
}
if (tickPosition() == TicksBothSides || tickPosition() == TicksBelow)
{
int y = this->rect().bottom();
p.drawLine(x, y, x, y - h);
}

}
}

// draw the slider (this is basically copy/pasted from QSlider::paintEvent)
opt.subControls = QStyle::SC_SliderGroove;
p.drawComplexControl(QStyle::CC_Slider, opt);

// draw the slider handle
opt.subControls = QStyle::SC_SliderHandle;
p.drawComplexControl(QStyle::CC_Slider, opt);
}

关于c++ - 刻度线在样式 QSlider 上消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27531542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com