如何制作半透明颜色的 QGraphicsItem?

How to make a QGraphicsItem of translucent color?

我正在开发一个 QT GUI,它通过各种形状从图形视图中注释图片,目前正在开发最简单的矩形。我设法在按下按钮后向图像添加一个矩形,并使用 setFlag 函数移动它。我现在需要做的是确保矩形是半透明的,以便用户可以看到确切注释的内容。我的矩形按钮代码:

void MainWindow::on_pushButton_11_clicked()  // rectangle shape creator
{
    QBrush redBrush(Qt::red);
    QBrush blueBrush(Qt::blue);
    QPen blackpen(Qt::black);
    blackpen.setWidth(3);
    rectangle = scene->addRect(-100,-100,50,50,blackpen,blueBrush);
    rectangle->setFlag(QGraphicsItem::ItemIsMovable);
}

我研究了 Qt 文档,发现 QGraphicsItem 库中的不透明度函数可能是解决这个问题的方法,但我找不到实现它的方法。感谢任何帮助或建议。

有几种解决方法:

  • 使用 setOpacity() 方法使项目的填充和边框颜色透明。

    rectangle->setOpacity(.2);
    
  • 如果要设置填充颜色的透明度,则必须为 QBrush 设置透明的 QColor。

    QColor brush_color(Qt::blue);
    brush_color.setAlpha(50);
    QPen blackpen(Qt::black);
    blackpen.setWidth(3);
    rectangle = scene->addRect(-100, -100, 50, 50, blackpen, brush_color);
    rectangle->setFlag(QGraphicsItem::ItemIsMovable);
    
  • 如果要在边框处设置透明度,则必须为 QBrush 设置透明 QColor。

    QBrush blueBrush(Qt::blue);
    QColor black_color(Qt::black);
    black_color.setAlpha(50);
    QPen blackpen(black_color);
    blackpen.setWidth(3);
    rectangle = scene->addRect(-100, -100, 50, 50, blackpen, blueBrush);
    rectangle->setFlag(QGraphicsItem::ItemIsMovable);