Название: Вопрос новичка по QGraphicsView
Отправлено: Martiro от Январь 05, 2013, 08:24
Объясните, что делаю не так? #include "mainwindow.h" #include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this);
QGraphicsScene scene(QRectF(-100,-100,640,480)); QGraphicsView *wgt = new QGraphicsView(&scene);
ui->vlMain->addWidget(wgt); QGraphicsRectItem* pRect = scene.addRect(0,0,100,100,QPen(Qt::black,3),QBrush(Qt::red)); pRect->setFlags(QGraphicsItem::ItemIsMovable);
} В общем, всё как по учебнику, но квадрата нет! В чем дело? Где я ошибся?
Название: Re: Вопрос новичка по QGraphicsView
Отправлено: Old от Январь 05, 2013, 08:39
Обьект сцены создается локально на стеке и после отработки конструктора - разрушается. Создавай его на куче.
Название: Re: Вопрос новичка по QGraphicsView
Отправлено: Martiro от Январь 05, 2013, 08:44
Обьект сцены создается локально на стеке и после отработки конструктора - разрушается. Создавай его на куче.
Не понял, что значит "на куче"? Выносить его объявление в хэдер?
Название: Re: Вопрос новичка по QGraphicsView
Отправлено: Old от Январь 05, 2013, 08:48
Не понял, что значит "на куче"? Выносить его объявление в хэдер?
Через new.
Название: Re: Вопрос новичка по QGraphicsView
Отправлено: Martiro от Январь 05, 2013, 08:55
Сделал так: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this);
QGraphicsScene scene(QRectF(-100,-100,640,480)); QGraphicsView *wgt = new QGraphicsView(&scene);
ui->vlMain->addWidget(wgt); QGraphicsRectItem* pRect = new QGraphicsRectItem(0,0,100,100); pRect->setPen(QPen(Qt::black,3)); pRect->setBrush(QBrush(Qt::red)); pRect->setPos(0,0); pRect->setFlags(QGraphicsItem::ItemIsMovable); scene.addItem(pRect); } Ничего не изменилось.
Название: Re: Вопрос новичка по QGraphicsView
Отправлено: Old от Январь 05, 2013, 09:07
C++ (Qt) #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QGraphicsScene *scene = new QGraphicsScene(QRectF(-100,-100,640,480)); QGraphicsView *wgt = new QGraphicsView(scene); ui->vlMain->addWidget(wgt); QGraphicsRectItem* pRect = scene->addRect(0,0,100,100,QPen(Qt::black,3),QBrush(Qt::red)); pRect->setFlags(QGraphicsItem::ItemIsMovable); }
|