Qt -如何设置QBrush的QGraphicsItemGroup
Qt -- How to set a QBrush for a QGraphicsItemGroup?
我试图在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);
}