如何制作半透明颜色的 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);
我正在开发一个 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);