crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Определение позиции курсора над QGraphicsPolygonItem, QGraphicsScene
Te0reTiK
  опции профиля:
сообщение 19.8.2011, 23:05
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 19.8.2011
Пользователь №: 2819

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




Репутация:   0  


Доброго времени суток, $coder!

Пишу небольшое приложение-тренажнр для разучивания нот в скрипичном ключе.

Прога содержит QGraphicsScene, который отображает клавиши фортепиано - элементы QGraphicsPolygonItem.

Требуется при нахождении курсора мыши над объектом-клавишей, чтобы эта самая клавиша подсвечивалась каким-либо способом (буду менять QBrush)

В общем, вроде того, когда подводишь курсор на обычную кнопку окна, эта кнопка слегка подсвечивается - требуется тоже самое

Вот только отловить событие перемещения мыши над QGraphicsPolygonItem ну ни как не получается.

Посоветуйте дельное решение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 20.8.2011, 0:38
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Сделайте наследника QGraphicsPolygonItem и предопределите функцию hoverEnterEvent(QGraphicsSceneHoverEvent * event)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Te0reTiK
  опции профиля:
сообщение 20.8.2011, 10:26
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 19.8.2011
Пользователь №: 2819

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




Репутация:   0  


Цитата(RazrFalcon @ 20.8.2011, 1:38) *
Сделайте наследника QGraphicsPolygonItem и предопределите функцию hoverEnterEvent(QGraphicsSceneHoverEvent * event)

к сожалению, не работает
python-фрагмент:
Раскрывающийся текст
class PianoKey(QtGui.QGraphicsPolygonItem):
    def __init__(self, *args):
        super(PianoKey, self).__init__(*args)
    def hoverEnterEvent(self, event):
        print event
        return super(lkey, self).hoverEnterEvent(event)

нашел решение в setMouseTracking:
Раскрывающийся текст
gview = QtGui.QGraphicsView()
gview.setScene(piano.PianoScene())
gview.setMouseTracking(True)

а вот обработчик:
Раскрывающийся текст
class PianoScene(QtGui.QGraphicsScene):
    def mouseMoveEvent(self, event):
        if event.type()==QtCore.QEvent.GraphicsSceneMouseMove:
            print str(self.itemAt(event.scenePos()))
            s = str(event.scenePos().x())+', '+str(event.scenePos().y())
            self.lb.setText(s)
        return super(PianoScene, self).mouseMoveEvent(event)


Есть какие-либо другие решения?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.3.2024, 15:27