Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/08/2016, 10:03
Avatar de xKuZz
xKuZz
 
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 10 meses
Puntos: 27
Respuesta: Qt. Detectar item al pasar el ratón sobre él

En cuanto al segundo caso no sé exactamente cuál es el problema, a mí me funciona bien sin hacer click, te dejo un ejemplo similar a ver si puedes ver cual es tu problema. Saludos.

Código C++:
Ver original
  1. #include <QDebug>
  2.  
  3. #include <QGraphicsItem>
  4. #include <QGraphicsView>
  5. #include <QGraphicsScene>
  6. #include <QGraphicsSceneMouseEvent>
  7. #include <QGraphicsEllipseItem>
  8.  
  9. class xcircle : public QGraphicsEllipseItem {
  10.   public:
  11.     explicit xcircle(QGraphicsItem* parent = nullptr) : QGraphicsEllipseItem(parent) {
  12.       setAcceptHoverEvents(true);
  13.       setPen(QPen(Qt::green, 3, Qt::SolidLine));
  14.       setRect(40,40,100,100);
  15.  
  16.     }
  17.  
  18.   private:
  19.     void hoverEnterEvent(QGraphicsSceneHoverEvent *event) {
  20.       setPen(QPen(Qt::yellow, 3, Qt::SolidLine));
  21.       qDebug()<<"Cambio a amarillo";
  22.       QGraphicsItem::hoverEnterEvent(event);
  23.     }
  24.  
  25.     void hoverLeaveEvent(QGraphicsSceneHoverEvent *event){
  26.       setPen(QPen(Qt::green, 3, Qt::SolidLine));
  27.       qDebug()<<"Cambio a verde";
  28.       QGraphicsItem::hoverLeaveEvent(event);
  29.     }
  30. };
  31.  
  32. class xscene : public QGraphicsScene {
  33.   public:
  34.     explicit xscene(QWidget * parent = nullptr) : QGraphicsScene(parent) {
  35.       ui_circle = new xcircle();
  36.       addItem(ui_circle);
  37.     }
  38.   private:
  39.     xcircle* ui_circle;
  40. };
  41.  
  42. class widget : public QGraphicsView
  43. {
  44.     Q_OBJECT
  45. public:
  46.     explicit widget(QWidget* parent = nullptr) : QGraphicsView(parent) {
  47.       setMouseTracking(true);
  48.       myScene = new xscene(this);
  49.       setScene(myScene);
  50.  
  51.     }
  52.  
  53. private:
  54.     xscene* myScene;
  55. };