如何在QGraphicsScene中设置QGraphicsRectItem的Brush

时间:2017-07-26 11:53:16

标签: qt user-interface graphics

我正在尝试使用QBrush通过setBrush设置5个QGraphicsRectItem的Brush。但它不起作用。这种行为令人困惑,因为它在某些情况下有效。

example image

代码包含我在Qt-Creator中创建的* .ui。我在其上添加了一个QGraphiocsView。

QGraphicsScene *scene_;

scene_ = new QGraphicsScene(ui->graphicsView);
ui->graphicsView->setScene(scene_);

scene_->setBackgroundBrush(Qt::red);


for (int i=0; i<5; i++)
{
    QBrush tmpBrush;
    tmpBrush.setColor( QColor(200-i*15, i*15, 50) );
    QPen tmpPen;
    tmpPen.setColor(Qt::blue);        tmpPen.setWidth(2);

    QGraphicsRectItem*tmpRect = scene_->addRect( 2, 25*i, 100, 20, tmpPen, tmpBrush );
    tmpRect->setPen(tmpPen);          tmpRect->setBrush(tmpBrush);
}

我在Ubuntu 16.04中使用QT 5.7进行编码。

1 个答案:

答案 0 :(得分:2)

你的画笔没有风格:-)或者,或许更有帮助的是,你创建一个新的QBrush ...

QBrush tmpBrush;

调用documentation个状态

的默认构造函数
  

构造一个带有Qt :: NoBrush样式的默认黑色画笔(即这个   刷子不会填充形状)。

所以,只需将其改为......

QBrush tmpBrush(Qt::SolidPattern);

你应该得到理想的结果。