int h;H值
void ColorSVwidget::paintEvent(QPaintEvent *e)//画圈 颜色画布上
{
//横 s
auto sColor = QColor::fromHsvF(h, 1.0, 1.0);
QPainter painter(this);
QLinearGradient svGradient(0, 0, this->width(), 0);
svGradient.setColorAt(0, QColor::fromRgbF(1.0, 1.0, 1.0));
svGradient.setColorAt(1, sColor);
//竖 v
QLinearGradient vGradient(0, 0, 0, 255);
vGradient.setColorAt(0, QColor(0, 0, 0, this->height()));
vGradient.setColorAt(1, QColor(0, 0, 0, 0));
auto r = rect();
painter.fillRect(r, svGradient);
painter.fillRect(r, vGradient);
painter.setPen(QColor::fromHsvF(abs(0.5 - h), 1, 1));//圈颜色与底色区别开
painter.drawEllipse(pt, 4.0, 4.0);//pt 圈的位置
}
右侧滑块就是一般QSlider 自己改样式就行 取值0-360