[Qt 5.6][QPixmap] Получение черной картинки с цветными пикселями в QLabel при установке в ней QPixmap

(Используя Visual Studio Community 2015, Qt 5.6.0)

В учебных целях я пытаюсь отобразить QPixmap RGB через QLabel, используя события сигналов и слотов. (чтобы отобразить своего рода предварительный просмотр цвета)

Для этого я добавил по три ползунка для каждого значения (r, g и b). Когда я обновляю, например, красный ползунок, он должен сгенерировать новый QPixmap со значениями цвета, а затем поместить его в QLabel, например:

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);
}

Это работает не очень хорошо, так как я получаю черный QLabel с несколькими цветными пикселями, например этот. Я действительно не знаю, почему он отображает это.

Может кто-нибудь разобраться со мной, пожалуйста?


person Major Squirrel    schedule 13.05.2016    source источник
comment
color не используется, а растровое изображение pixmap имеет определенный размер, но остается неинициализированным. Вы пропустили звонок pixmap.fill(color);?   -  person peppe    schedule 13.05.2016
comment
@peppe Спасибо, приятель, я публикую ответ, в котором упоминаю тебя. :)   -  person Major Squirrel    schedule 16.05.2016


Ответы (1)


Что ж, @peppe был прав. Я забыл заполнить QPixmap цветом. :)

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);
}

Спасибо за ваш ответ !

person Major Squirrel    schedule 16.05.2016