Como desenhar um desenho em vez do controle deslizante no QSlider?
-
20-09-2019 - |
Pergunta
Eu criei uma classe que herda do QSLider. Quero desenhar um quadro no controle deslizante (grabber) em vez de mostrar o claro. Como fazer isso?
--
Encontrei uma resposta e publiquei depois de receber a resposta. Com o devido respeito ao respondente, escolherei essa resposta. No entanto, gostaria de compartilhar código para que qualquer pessoa com o mesmo problema possa se beneficiar:
void InheritedSlider::paintEvent(QPaintEvent *event)
{
// uncomment to draw the parent first. Comment out to just ignore it.
//QSlider::paintEvent(event);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
//painter.translate(width() / 2, height() / 2);
//painter.scale(100 / 200.0, 100 / 200.0);
QPainterPath volPath;
volPath.moveTo(60.0, 40.0);
volPath.arcTo(20.0, 20.0, 40.0, 40.0, 0.0, 360.0);
volPath.moveTo(40.0, 40.0);
volPath.lineTo(40.0, 80.0);
volPath.lineTo(80.0, 80.0);
volPath.lineTo(80.0, 40.0);
volPath.closeSubpath();
painter.drawPath(volPath);
}
Solução
Você pode fazer isso no Paintevente Método do widget. Isso permite que você redesenhe tudo ou apenas uma parte do widget.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow