crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Когда уставливаю QCursor немедленно закрывается приложение
Гость_september_*
сообщение 8.9.2013, 18:25
Сообщение #1





Гости








    


Привет всем! создал программу которое по выборе по кнопке выбираешь круг или линию и рисуешь в 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);
        }
    }
}


все вроде получается, но когда выбираешь рисовать линию , программа немедленно закрывается...и еще заметил что если убрать метод mouseMoveEvent , то программа работает норм...почему программа ведет себя так? как это исправить ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.9.2013, 19:28
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Гость_september_* @ 8.9.2013, 20:25) *
наводишь на него мышкой менятся курсор
а используешь
Цитата(Гость_september_* @ 8.9.2013, 20:25) *
mousePressEvent(QGraphicsSceneMouseEvent* event)
т.е. нажатия клавиши мыши
а по идее нужно использовать
bool event ( QEvent * event ) [virtual protected]
а в нём обрабатывать события:
QEvent::HoverEnter
QEvent::HoverLeave

либо QGraphicsSceneHoverEvent
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 12:20