我正在尝试制作一个自定义颜色选择器,我应该拥有用颜色填充图像所需的一切。当我运行程序时,它不会显示没有颜色的小部件,我可以移动到左侧或顶部。
我在设计器选项卡中添加了QWidget,将其提升为我命名为“ColorPicker”的新类。我在头文件中添加了一个受保护的函数paintEvent。
我的ColorPicker CPP文件:
#include "colorselector.h"
ColorSelector::ColorSelector(QWidget *parent) : QWidget(parent)
{
}
void ColorSelector::paintEvent(QPaintEvent *){
QColor c;
QImage pic(360,20,QImage::Format_RGB32);
for(int x=0; x < 360; x++){
for(int y=0; y < 20; y++){
c.setHsl(x,255,127);
pic.setPixel(x,y,c.rgb());
}
}
}
我的ColorPicker头文件:
#ifndef COLORSELECTOR_H
#define COLORSELECTOR_H
#include <QWidget>
class ColorSelector : public QWidget
{
Q_OBJECT
public:
explicit ColorSelector(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *);
signals:
public slots:
};
#endif // COLORSELECTOR_H
它应该在QWidget中给我彩虹色彩。
这不是你想要的,但可能会向你展示这样做的良好愿景。你可以有三个QSlider代表3种主要颜色红色绿色和蓝色滑块的值应该介于0到255之间。
然后创建一个正方形的Qlabel并用css绘制背景颜色,滑块的值如下:
QLabel* label = new QLabel;
label->->setStyleSheet("background-color:rgb(slider1->value();,sliderGreen->value();,slideBlue->value(););");
老兄,它只是一个代码的概念,它不是真正的代码请重写它不粘贴它谢谢:)
在颜色选择器中,您可以使用Qslider中的r,g,b,a来绘制窗口小部件的背景
void paintEvent(QPaintEvent* e) {
QPainter painter{this};
//and now fill the background!
painter.setBrush(QColor(r.value(), g.value(), b.value(), a.value()));