2016-05-13 18 views
0

(Verwenden von Visual Studio Gemeinschaft 2015 Qt 5.6.0) Einstellung[Qt 5.6] [QPixmap] "schwarzes Bild mit farbigen Pixel" in QLabel Immer wenn ein QPixmap darin

Für Schulungszwecke, ich versuche, um eine RGB QPixmap über ein QLabel mit Signalen und Slots Events anzuzeigen. (um eine Art Farbvorschau anzuzeigen)

Dafür habe ich drei Schieberegler für jeden Wert (r, g und b) hinzugefügt. Wenn ich zum Beispiel aktualisieren der rote Schieberegler wird angenommen, eine neue QPixmap mit den Farbwerten zu erzeugen, dann setzen sie in eine QLabel, wie folgt aus:

void    Application::updateColorLabel(int value) { 
    int    r, g, b; 
    QPixmap   pixmap; 
    QColor   color; 

    this->ui.label_minValueR->setNum(value); 
    pixmap = QPixmap(this->ui.label_color_preview->size()); 
    r = this->ui.label_minValueR->text().toInt(); 
    g = this->ui.label_minValueG->text().toInt(); 
    b = this->ui.label_minValueB->text().toInt(); 
    color = QColor(r, g, b); 
    this->ui.label_color_preview->setPixmap(pixmap); 
} 

Es funktioniert nicht sehr gut, da ich eine bekommen schwarz QLabel mit wenigen farbigen Pixeln, wie this. Ich weiß nicht wirklich, warum es das zeigt.

Kann mir jemand das bitte erklären?

+2

"Farbe" ist nicht verwendet, und die Pixmap 'Pixmap' ist mit einer bestimmten Größe zugeordnet, aber nicht initialisiert. Vermissen Sie einen 'pixmap.fill (color);' Anruf? – peppe

+0

@peppe Danke Kumpel, ich poste eine Antwort, die dich erwähnt. :) –

Antwort

0

Nun, @peppe hatte Recht. Ich habe vergessen, die QPixmap mit der Farbe zu füllen. :)

void    Application::updateColorLabel(int value) { 
    int    r, g, b; 
    QPixmap   pixmap; 
    QColor   color; 

    this->ui.label_minValueR->setNum(value); 
    r = this->ui.label_minValueR->text().toInt(); 
    g = this->ui.label_minValueG->text().toInt(); 
    b = this->ui.label_minValueB->text().toInt(); 
    color = QColor(r, g, b); 
    pixmap = QPixmap(this->ui.label_color_preview->size()); 
    pixmap.fill(color); 
    this->ui.label_color_preview->setPixmap(pixmap); 
} 

Vielen Dank für Ihre Antwort!