Russian Qt Forum
Ноябрь 23, 2024, 18:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос новичка по QGraphicsView  (Прочитано 4058 раз)
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);

}
В общем, всё как по учебнику, но квадрата нет! В чем дело? Где я ошибся?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Январь 05, 2013, 08:39 »

Обьект сцены создается локально на стеке и после отработки конструктора - разрушается.
Создавай его на куче.
Записан
Martiro
Гость
« Ответ #2 : Январь 05, 2013, 08:44 »

Обьект сцены создается локально на стеке и после отработки конструктора - разрушается.
Создавай его на куче.
Не понял, что значит "на куче"? Выносить его объявление в хэдер?
« Последнее редактирование: Январь 05, 2013, 08:46 от Martiro » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Январь 05, 2013, 08:48 »

Не понял, что значит "на куче"? Выносить его объявление в хэдер?
Через new.
Записан
Martiro
Гость
« Ответ #4 : Январь 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);
}
Ничего не изменилось.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #5 : Январь 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);
 
}
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.23 секунд. Запросов: 22.