• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

Qt - Rechteck zeichnen

DeletedUser86497

Gast
Hallo, vor kurzem habe ich angefangen Qt zu lernen. :)
Mein Problem ist nun folgendes: Ich möchte ein Rechteck zeichnen, dessen Farbe sich durch die Rot, Grün, und Blau Werte Regeln lässt. Die RGB-Werte werden durch 3 Slider bestimmt. Ich scheitere am zeichnen des Rechtecks ;-)
Kann mir wer behilflich sein?
 

DeletedUser

Gast
was bitte ist Qt?

Okay es ist ein Framework für grafische Oberflächen in C++. Quelle
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser

Gast
Füg dir einfach ein dummy-Widget in dein Fenster ein, in das du dann mit dem QPainter zeichnest. Habs mal sehr Quick'n'dirty umgesetzt:
Code:
#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();
}
Durch renderWidget.update() wird das Widget neu gezeichnet und paintEvent ausgelöst. Dadrin kannst du dann Zeichnen was du willst. Den Rest sollte dir die Doku liefern.
 

DeletedUser86497

Gast
Vielen Dank :)
Dadurch, dass mein Englisch nicht so perfekt ist, habe ich teilweise Probleme die Doku zu verstehen :|
Gibt zwar noch nen Fehler und 4 Warnungen, aber ich denke ich bekomm das hin
 
Zuletzt bearbeitet von einem Moderator:
Oben