Qt -如何设置QBrush的QGraphicsItemGroup

Qt -- How to set a QBrush for a QGraphicsItemGroup?

本文关键字:QBrush QGraphicsItemGroup 设置 何设置 Qt      更新时间:2023-10-16

我试图在Qt上为自己创建一个界面,我需要几个矩形在DICOM图像(磁共振图像)上,所以它们需要一些颜色,而不是黑色,但我找不到一种方法来为QGraphicsItemGroup设置画笔,我用它来保持矩形的组织。

QGraphicsScene让我添加一个QRect关联到QBrush单独与

QgraphicsScene *scene = new QGraphicsScene();
QRectF rect = QRectF(QPoint(1,2),QPoint(3,4));
scene->addRect(rect, QBrush(Qt::red)); // using red as example

但是单独添加每个矩形会让它变得太乱,而且可能会更慢。我需要一种方法来设置矩形的QBrush,但使用QGraphicsItemGroup被添加到QGraphicsScene。

为什么你不能重新实现QGraphicsItemGroup和内部有一个函数称为:

void ReimplementedQGraphicsItemGroup::SetRectangleBrush(const QBrush& brush)

然后在这个函数中遍历你添加到组中的每个矩形设置画笔

QgraphicsScene *scene = new QGraphicsScene();
ReimplementedQGraphicsItemGroup ReimplGraphicsGroup = new ReimplementedQGraphicsItemGroup()
// First rect
QGraphicsRectItem rect(1,2,3,4);
rect.setBrush(QColor(Qt::red);
ReimplGraphicsGroup->AddRectangle(rect);
// Second rect
QGraphicsRectItem rect2(5,6,7,8);
rect2.setBrush(QColor(Qt::blue);
ReimplGraphicsGroup->AddRectangle(rect2);
// add reimplemented graphics item group to scene
scene->addItem(ReimplGraphicsGroup);
void ReimplementedQGraphicsItemGroup::SetRectangleBrush(const QBrush& brush)
{
    foreach (QGraphicsRectItem rect, m_ListRects)
    { 
        rect.setBrush(brush);
    }
}
class ReimplementedQGraphicsItemGroup : public QGraphicsItemGroup {
    // a member of ReimplementedQGraphicsItemGroup
    QList<QGraphicsRectItem> m_ListRects;
}

void ReimplementedQGraphicsItemGroup::AddRectangle(QGraphicsRectItem rect)
{
    addToGroup(rect);
    m_ListRects.append(rect);
}