我试图在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。
答案 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);
}