我正在制作图像编辑器应用程序。我想添加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();
}
}
我不知道如何更改该图像的图像颜色或背景颜色...... 它可以吗?
有什么想法吗?
...谢谢
答案 0 :(得分:2)
imageHolder
小部件的类型是什么?
我建议使用Qt Style Sheet来更改小部件的背景颜色。
正如Qt文件所述:
不能保证使用QPalette适用于所有样式,因为样式作者受到不同平台指南和本机主题引擎的限制。
要更改窗口小部件的背景颜色(可能会有一些限制,具体取决于imageHolder
的类型),您可以执行以下操作:
ui->imageHolder->setStyleSheet("background-color : " + color.name());
答案 1 :(得分:1)
如果您尝试更改图像的像素值,QPalette不是您认为的那样。它用于更改UI元素的颜色。
如果您想要更改背景颜色,QPalette可以完成这项工作,但您需要一个包含Alpha通道或透明度蒙版的图像。将带有alpha的PNG加载到图像持有者中,看看是否有效。