Qt - 如何为QGraphicsItemGroup设置QBrush?

时间:2015-07-27 14:16:21

标签: c++ qt qgraphicsscene

我试图在Qt上为自己创建一个界面,我需要DICOM图像上的几个矩形(磁性图像),所以它们需要是除了黑色之外的一些颜色,但我可以'找到一种为QGraphicsItemGroup设置画笔的方法,用于保持矩形有条理。

QGraphicsScene允许我单独添加与QBrush相关联的QRect

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。

1 个答案:

答案 0 :(得分:0)

为什么你不能重新实现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);
}