QSlider好像只能是长条状的,有什么好的实现方式吗
https://blog.csdn.net/kenfan1647/article/details/111069607
可以setStyle(new style);
在style中重写函数drawComplexControl(ComplexControl control, const QStyleOptionComplex *option,QPainter *painter, const QWidget *widget) const,在函数中画slider。
case CC_Slider:
if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
QRect groove = subControlRect(CC_Slider, option, SC_SliderGroove, widget);
QRect handle = subControlRect(CC_Slider, option, SC_SliderHandle, widget);
painter->save();
QPixmap grv = cached( tr(":/sliderGroove.png") );//设置进度条图片
QPixmap hndl = cached( tr(":/sliderHandle.png") );//设置滑块图片
QPixmap hndlMove = cached( tr(":/sliderHandleMove.png"));
if ((option->subControls & SC_SliderGroove) && groove.isValid() && handle.isValid()) {
painter->drawPixmap(QRect(groove.x() , groove.y()-2 ,
groove.width(), grv.height()),
grv);
}
//如果被选中
if ((option->subControls & SC_SliderHandle) && (slider->state & State_Sunken))
painter->drawPixmap(handle.topLeft(), hndlMove);
else if((option->subControls & SC_SliderHandle))
painter->drawPixmap(handle.topLeft(), hndl);
painter->restore();
}
break;
图片根据自己需要换上自己喜欢的就可以了。
如有帮助,请采纳一下,谢谢。