更新图像的颜色或图像的背景颜色

时间:2011-01-13 10:02:04

标签: qt

我正在制作图像编辑器应用程序。我想添加QColorDialog以更新图像的颜色。 我在QLabel上设置了图片。

这是我运行良好但无法改变图像颜色的代码。

void ImageViewer::updateColor()
{
    QColor color = QColorDialog::getColor(Qt::white,ui->imageHolder);

    if(color.isValid())
    {
//        QPixmap pixmap = *ui->imageHolder->pixmap();  
//        pixmap.fill(color);**  //this is also not change color of image  
        ui->imageHolder->setPalette(QPalette(color));  
        ui->imageHolder->setAutoFillBackground(true);  
        ui->imageHolder->update();  
    }  
}

我不知道如何更改该图像的图像颜色或背景颜色...... 它可以吗?

有什么想法吗?

...谢谢

2 个答案:

答案 0 :(得分:2)

imageHolder小部件的类型是什么?

我建议使用Qt Style Sheet来更改小部件的背景颜色。

正如Qt文件所述:

  

不能保证使用QPalette适用于所有样式,因为样式作者受到不同平台指南和本机主题引擎的限制。

要更改窗口小部件的背景颜色(可能会有一些限制,具体取决于imageHolder的类型),您可以执行以下操作:

ui->imageHolder->setStyleSheet("background-color : " + color.name());

答案 1 :(得分:1)

如果您尝试更改图像的像素值,QPalette不是您认为的那样。它用于更改UI元素的颜色。

如果您想要更改背景颜色,QPalette可以完成这项工作,但您需要一个包含Alpha通道或透明度蒙版的图像。将带有alpha的PNG加载到图像持有者中,看看是否有效。