2011-01-13 176 views
0

我正在使图像编辑器App.I想要添加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(); 
    } 
} 

我不知道如何改变图像或图像的色彩backbround的颜色... 是更多钞票?

有什么想法?

谢谢...

回答

1

如果你想改变图像的像素值QPalette不是你认为它的目的。它用于更改UI元素的颜色。

如果你想改变背景颜色,QPalette可以完成这项工作,但你需要一个包含alpha通道或透明度遮罩的图像。将带有alpha的PNG加载到您的图像保持器中,然后查看是否有效。

2

你是什么imageHolder控件的类型?

我会推荐使用Qt Style Sheet来更改小部件的背景颜色。

由于Qt文档状态:

使用QPalette不保证所有款式工夫,因为作者的风格是由不同的平台的指导方针,并通过原生主题引擎的限制。

要更改窗口小部件的背景颜色(有可能是取决于imageHolder类型有些限制),这里是你能做什么事情是这样的:

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