#include <QWidget>
#include <QPainter>
#include <QSlider>
#include <QVBoxLayout>
#include <QApplication>
class RenderWidget : public QWidget
{
public:
RenderWidget():
color(0, 0, 0)
{
resize(100, 100);
}
void setColor(int r, int g, int b)
{
color = QColor(r, g, b);
}
void paintEvent(QPaintEvent* event)
{
QPainter painter(this);
painter.setPen(QPen(color, 200));
painter.drawPoint(0, 0);
painter.end();
}
private:
QColor color;
};
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget():
layout(this),
renderWidget(),
redSlider(Qt::Horizontal),
greenSlider(Qt::Horizontal),
blueSlider(Qt::Horizontal)
{
redSlider.setRange(0, 255);
greenSlider.setRange(0, 255);
blueSlider.setRange(0, 255);
layout.addWidget(&renderWidget);
layout.addWidget(&redSlider);
layout.addWidget(&greenSlider);
layout.addWidget(&blueSlider);
connect(&redSlider, SIGNAL(valueChanged(int)),
this, SLOT(draw()));
connect(&greenSlider, SIGNAL(valueChanged(int)),
this, SLOT(draw()));
connect(&blueSlider, SIGNAL(valueChanged(int)),
this, SLOT(draw()));
resize(150, 150);
}
private Q_SLOTS:
void draw()
{
renderWidget.setColor(redSlider.value(), greenSlider.value(), blueSlider.value());
renderWidget.update();
}
private:
QVBoxLayout layout;
RenderWidget renderWidget;
QSlider redSlider;
QSlider greenSlider;
QSlider blueSlider;
};
int main(int argc, char** argv)
{
QApplication app(argc, argv);
MainWidget mw;
mw.show();
return app.exec();
}