如何在Qt中制作自定义颜色选择器?

问题描述 投票:0回答:2

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

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

c++ qt widget
2个回答
0
投票

这不是你想要的,但可能会向你展示这样做的良好愿景。你可以有三个QSlider代表3种主要颜色红色绿色和蓝色滑块的值应该介于0到255之间。

然后创建一个正方形的Qlabel并用css绘制背景颜色,滑块的值如下:

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

老兄,它只是一个代码的概念,它不是真正的代码请重写它不粘贴它谢谢:)


0
投票

在颜色选择器中,您可以使用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()));
© www.soinside.com 2019 - 2024. All rights reserved.