如何在Qt中创建自定义颜色选择器?

时间:2019-04-24 12:33:59

标签: c++ qt widget

我试图制作一个自定义的颜色选择器,我应该拥有用颜色填充图像所需的一切。当我运行程序时,它仅显示没有颜色的小部件,而我可以将其移到左侧或顶部。

我在设计器选项卡中添加了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中给我带来彩虹般的色彩。

3 个答案:

答案 0 :(得分:0)

这不是您真正想要的,但可以显示出实现此目标的良好愿景。 您可以使用三个QSlider来代表3种主要颜色,红色,绿色和蓝色,每个滑块的值应介于0到255之间。

然后创建一个方形Qlabel并通过css用滑块值绘制它的backgroundColor:

QLabel* label = new QLabel;
label->->setStyleSheet("background-color:rgb(slider1->value();,sliderGreen->value();,slideBlue->value(););");

把它当作代码的一个概念,不是真正的代码,请重写它,不要粘贴它:)

答案 1 :(得分:0)

在颜色选择器中,您可以使用Qslider中的r,g,b,a绘制小部件的背景

Capybara.reset_sessions!

答案 2 :(得分:0)