Как я могу добавить новую форму прямоугольника к QgraphicView
В этом коде, который создает прямоугольник при нажатии кнопки. Но когда я нажимаю кнопку второй раз, ранее созданный прямоугольник удаляется. Мне нужно сделать 2 прямоугольника, когда я нажимаю кнопку 2 раза. Создать 3 прямоугольника, когда я нажимаю кнопку 3 раза
void Widget::on_btnCreateRect_clicked()
{
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
//QBrush redBrush(Qt::red);
QBrush blueBrush(Qt::blue);
QPen blackPen(Qt::black);
blackPen.setWidth(6);
rect = scene->addRect(-10,-10,100,100,blackPen,blueBrush);
rect->setFlag(QGraphicsItem::ItemIsMovable, true);
}
С scene = new QGraphicsScene(this);
Вы создаете новую сцену и добавляете прямоугольник к ней. Старая сцена с предыдущими прямоугольниками существует, но больше не отображается. Поэтому вместо создания новой сцены используйте старую, например: rect = ui->graphicsView->scene()->addRect(-10,-10,100,100,blackPen,blueBrush);
, Это также позволит избежать утечки памяти, которую вы создаете new
, Вот исправленный код:
void Widget::on_btnCreateRect_clicked()
{
//QBrush redBrush(Qt::red);
QBrush blueBrush(Qt::blue);
QPen blackPen(Qt::black);
blackPen.setWidth(6);
QRect *rect = ui->graphicsView->scene()->addRect(-10,-10,100,100,blackPen,blueBrush);
rect->setFlag(QGraphicsItem::ItemIsMovable, true);
}
Других решений пока нет …