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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Добавить QGraphicsItem в сцену по нажатию кнопки  (Прочитано 2990 раз)
JohnKrusty
Гость
« : Май 01, 2011, 14:11 »

Добрый день. Есть класс Node, наследник QGraphicsItem, по сути это узел графа, короче кружочек. Необходимо по нажатию кнопки добавлять узел в сцену. Сцена связывается с QGraphicsView в конструкторе окна, а добавление само происходит в функции клика по кнопке, естественно прога вылетает после клика. Код типо:

Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QGraphicsScene * scene = new QGraphicsScene;
    ui->rabobl->setScene(scene);
   
}

void MainWindow::on_pb1_clicked()
{
  Node *node1 = new Node(ui->rabobl);
  scene->addItem(node1);
}
Подскажите, как поступить, я ламер)
Записан
alexman
Гость
« Ответ #1 : Май 01, 2011, 20:02 »

Где падает? В конструкторе Node?
Записан
madRoger
Гость
« Ответ #2 : Май 01, 2011, 20:48 »

А как вы из слота хотите обратиться к локальному указателю на объект, который создается в конструкторе(и там же умирает)?

Указатель на объект сцены обычно объявляют в хедере, а в конструкторе выделяют под него память, но не так:
Код:
QGraphicsScene * scene = new QGraphicsScene;
а так:
Код:
scene = new QGraphicsScene;

А в слоте уже обращаются к объекту сцены через указатель scene.
Записан
alexman
Гость
« Ответ #3 : Май 01, 2011, 20:49 »

QGraphicsScene * QGraphicsView::scene () const
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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