【问题标题】:[Qt 5.6][QPixmap] Getting "black picture with colored pixels" in QLabel when setting a QPixmap in it[Qt 5.6][QPixmap] 在 QLabel 中设置 QPixmap 时获取“带有彩色像素的黑色图片”
【发布时间】:2016-05-13 15:06:59
【问题描述】:

(使用 Visual Studio Community 2015,Qt 5.6.0)

出于培训目的,我尝试使用信号和插槽事件通过 QLabel 显示 RGB QPixmap。 (显示一种颜色预览)

为此,我为每个值(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,它的彩色像素很少,比如this。我真的不知道为什么会显示这个。

有人能帮我解决一下吗?

【问题讨论】:

  • color 未使用,像素图pixmap 分配了一定大小但未初始化。你错过了pixmap.fill(color); 电话吗?
  • @peppe 谢谢你的朋友,我发布了一个提到你的答案。 :)

标签: qt colors pixels qpixmap qlabel


【解决方案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);
}

感谢您的回答!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    相关资源
    最近更新 更多