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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Курсор в QGraphicsView  (Прочитано 2360 раз)
qtист
Гость
« : Июль 06, 2009, 15:59 »

Создана графическая сцена,туда кидается итем,у него устанавливается
свой курсор:

Код
C++ (Qt)
class Item : public QGraphicsItem
{
public:
   Item(QGraphicsItem *parent = 0)
       : QGraphicsItem(parent)
  {  
      ......
       setCursor(Qt::OpenHandCursor);
   }
......
}

В некотороых случаях в сцене переопределяется курсор:
Код
C++ (Qt)
void ObModule::on_toolButton_pressed()
{  
   ui.graphicsView->setCursor(QCursor(QPixmap(":/Resources/prizma16.ico")));
}
//восстанавливается стандартная стрелка
void ObModule::on_toolButton_3_pressed()
{
     ui.graphicsView->unsetCursor();
}

Так вот,например, установлен курсор с prizma16.ico,двигаем мышку над итемом - появляется
OpenHandCursor. Затем восстанавливаю стандартный курсор - и пофигу:курсор с prizma16.ico.
А вот ежели мышку над итемом не двигаем - всё восстанавливается.
Чё не так делаю? Плачущий
Записан
mal
Гость
« Ответ #1 : Июль 07, 2009, 11:31 »

не факт что это то , что вам нужно, но у себя я сделал так:
Код:
void CItem::hoverEnterEvent ( QGraphicsSceneHoverEvent * event )
{
...
emit cursorOver(true);
}

void CItem::hoverLeaveEvent ( QGraphicsSceneHoverEvent * event )
{
...
emit cursorOver(false);
}
в виджете где у вас сцена и вью, при создании айтема вяжете эти сигналы с соответствующими слотами, и управление сменой курсора происходит в одном виджете.
И не забудьте при создании айтема разрешить ему принимать hover-события
Код:
CItem *p_item;
...
p_item->setAcceptsHoverEvents(true);

Не могу сказать предложенная схема айс это или не айс, но меня такое решение удовлетворило в свое время.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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