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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Когда уставливаю QCursor немедленно закрывается приложение  (Прочитано 2796 раз)
september
Гость
« : Сентябрь 08, 2013, 18:19 »

Привет всем! создал программу которое по выборе по кнопке выбираешь круг или линию и рисуешь в QGraphicsView (круг рисуется по щелку мыши, а линию рисуешь мышкой). теперь я хочу что когда нарисовал круг и наводишь на него мышкой менятся курсор...
вот кусок кода
void MyScene::mousePressEvent(QGraphicsSceneMouseEvent* event)
{
    if(m_flag && event->button() == Qt::LeftButton)
    {
        QGraphicsEllipseItem* ellipse = addEllipse(event->scenePos().x(), event->scenePos().y(), 50, 50);
        ellipse->setCursor(Qt::OpenHandCursor);
        m_undertow_vertex.push_front(ellipse);
    }
    else
    {
        if(event->button() == Qt::LeftButton)
        {
            x_line = event->scenePos().x();
            y_line = event->scenePos().y();
            pm_line = addLine(x_line, y_line, event->scenePos().x(), event->scenePos().y());
            pm_ellipse_green = addEllipse(event->scenePos().x() - 4, event->scenePos().y() - 4
                                          , 8, 8, QPen(Qt::green), QBrush(Qt::green));
            QGraphicsEllipseItem* ellipse_red = addEllipse(event->scenePos().x() - 4, event->scenePos().y() - 4
                                        , 8, 8, QPen(Qt::red), QBrush(Qt::red));
            QPair<QGraphicsLineItem*, red_green> tmp = { pm_line, { ellipse_red, pm_ellipse_green } };
            m_undertow_arc.push_front(tmp);
        }
    }
}
 
void MyScene::mouseMoveEvent(QGraphicsSceneMouseEvent* event)
{
    if(!m_flag)
    {
        pm_line->setLine(x_line, y_line, event->scenePos().x(), event->scenePos().y());
        pm_ellipse_green->setRect(event->scenePos().x() - 4, event->scenePos().y() - 4, 8, Крутой;
    }
}


все вроде получается, но когда выбираешь рисовать линию , программа немедленно закрывается...и еще заметил что если убрать метод mouseMoveEvent , то программа работает норм...почему программа ведет себя так? как это исправить ?
Записан
Nidxogg
Гость
« Ответ #1 : Сентябрь 08, 2013, 18:44 »

Под pm_line выделена память?
Записан
september
Гость
« Ответ #2 : Сентябрь 08, 2013, 19:19 »

нет ! и в чем это поможет ?
Записан
september
Гость
« Ответ #3 : Сентябрь 08, 2013, 19:34 »

выделил память под pm_line и pm_ellipse_green, теперь появилось другая проблема ... после рисования круга , линия не некорректно рисуется (т.е нажал на кнопку мыши зафиксировал первую точку линию , потом перемещаешь мышкой , отпускаешь кнопку мышкы линия досихпор продолжает двигаться за мышкой  ) почему это происходит ? как это исправить ?
Записан
Nidxogg
Гость
« Ответ #4 : Сентябрь 08, 2013, 19:36 »

mouseReleaseEvent
Записан
september
Гость
« Ответ #5 : Сентябрь 08, 2013, 19:48 »

не получается...перед рисованием кругом линия норм рисуется , после рисования круга нет...
Записан
Nidxogg
Гость
« Ответ #6 : Сентябрь 08, 2013, 19:50 »

qt diagram scene example посмотри
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Сентябрь 08, 2013, 20:58 »

нет ! и в чем это поможет ?

то есть что такое обращение по неинициализированному указателю ты не понимаешь? Сперва нужно выучить С++.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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