У меня есть часть кода, которую я тестировал и работал, и теперь я хотел бы сделать его классом, чтобы иметь что-то чище.
Следующий код создает сцену, содержащую прямоугольник, и отображает ее в виджете «graphicview»
QGraphicsScene *scene = new QGraphicsScene;
QGraphicsRectItem *rect = new QGraphicsRectItem();
rect->setRect(0,0,100,100);
scene->addItem(rect);
ui->graphicsView->setScene(scene);
Теперь я хотел бы создать класс, содержащий эту сцену, так что мне просто нужно вызвать:
MyClass *myscene = new MyClass;
ui->graphicsView->setScene(myscene->scene)
В классе MyClass очередь должна иметь приватный аргумент, объявленный как QGraphicsScene *scene = new QGraphicsScene;
, или просто приватный аргумент QGraphicsScene *scene
, а затем внутри конструктора *scene=new QGraphicsScene
И то же самое для того, куда я должен поместить удаление, в деструкторе MyScene?
редактировать: основываясь на ответе, я пытался переделать свой код без new
:
QGraphicsScene scene;
QGraphicsRectItem rect;
rect.setRect(0,0,100,100);
scene.addItem(&rect);
ui->graphicsView->setScene(&scene);
Но этот код не работает (виджет 'graphicView' ничего не отображает), и все примеры, которые я нашел в Qt, используют оператор new. Чего мне не хватает?