【问题标题】:How to make a QGraphicsItem of translucent color?如何制作半透明颜色的 QGraphicsItem?
【发布时间】:2020-03-08 06:11:29
【问题描述】:

我正在开发一个 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 库中的 opacity 函数可能是解决这个问题的方法,但我找不到实现它的方法。任何帮助或建议都非常感谢。

【问题讨论】:

    标签: c++ qt qgraphicsitem


    【解决方案1】:

    有几种解决方案:

    • 使用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);
      

    【讨论】:

      猜你喜欢
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多