我正在尝试使用 QGraphicsView 生成可点击的 HVS 颜色空间小部件。整个 QGraphicsView 的背景应该如下图所示(没有 jpeg-artefacts)。单击位置 x,y 将给出光标下的颜色。
我不想直接使用图像,而是考虑使用 qstylesheets 在两个方向(水平和垂直)上使用 qlineargradient。事实上,我不知道该怎么做!
简单地使用水平色标是直接向前的,我不知道如何添加额外的垂直(白色-黑色-黑色)渐变。到目前为止我得到的(从 QGraphicsView 继承的类的构造函数内部)是:
QColor hsvColor[6];
hsvColor[0].setHsv(0, 255, 255);
hsvColor[1].setHsv(60, 255, 255);
hsvColor[2].setHsv(120, 255, 255);
hsvColor[3].setHsv(180, 255, 255);
hsvColor[4].setHsv(240, 255, 255);
hsvColor[5].setHsv(300, 255, 255);
QString styleH = QString("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0,") +
QString("stop:0.000 rgba(%1, %2, %3, 255),").arg( hsvColor[0].red() ).arg( hsvColor[0].green() ).arg( hsvColor[0].blue() ) +
QString("stop:0.166 rgba(%1, %2, %3, 255),").arg( hsvColor[1].red() ).arg( hsvColor[1].green() ).arg( hsvColor[1].blue() ) +
QString("stop:0.333 rgba(%1, %2, %3, 255),").arg( hsvColor[2].red() ).arg( hsvColor[2].green() ).arg( hsvColor[2].blue() ) +
QString("stop:0.500 rgba(%1, %2, %3, 255),").arg( hsvColor[3].red() ).arg( hsvColor[3].green() ).arg( hsvColor[3].blue() ) +
QString("stop:0.666 rgba(%1, %2, %3, 255),").arg( hsvColor[4].red() ).arg( hsvColor[4].green() ).arg( hsvColor[4].blue() ) +
QString("stop:0.833 rgba(%1, %2, %3, 255),").arg( hsvColor[5].red() ).arg( hsvColor[5].green() ).arg( hsvColor[5].blue() ) +
QString("stop:1.000 rgba(%1, %2, %3, 255));").arg( hsvColor[0].red() ).arg( hsvColor[0].green() ).arg( hsvColor[0].blue() );
this->setStyleSheet(styleH);
这给了我:
我尝试了一段时间,现在在这里问:
是否可以使用 qlineargradient 和 qstylesheets 像上面一样绘制 xy 渐变?
也许有人可以给我一个关于如何使用 qstylesheets 的提示......
非常感谢你,感谢xam