Как добавить прямоугольник в QGraphicView

Как я могу добавить новую форму прямоугольника к 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);
}

1

Решение

С 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);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector