Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Modifica da QGraphicsItem a QGraphicsObject
Forum Updated to NodeBB v4.3 + New Features

Modifica da QGraphicsItem a QGraphicsObject

Scheduled Pinned Locked Moved Solved Italian
2 Posts 1 Posters 721 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    Bruschetta
    wrote on last edited by
    #1

    Dovendo utilizare i Signals & Slots all'interno di una mia classe di tipo QGraphicsItem sono stato costretto a modificarla in QGraphicsObject.
    Il passaggio è stato relativamente indolore ma adesso la funzione che mi cattura l'evento on click non mi funziona più a causa di un cast. Potreste aiutarmi a risolvere il problema?

    Vecchio modo funzionante:

    void TestHoverItem::mousePressEvent(QGraphicsSceneMouseEvent *e)
    {
        m_mouseIsDown = true;
        QGraphicsItem::mousePressEvent(e);
        QPoint point = e->scenePos().toPoint();
    
        auto sceneTop = scene();
    
        QGraphicsItem *item = sceneTop->itemAt(point.x(), point.y(),QTransform());
        TestHoverItem *hover = qgraphicsitem_cast<TestHoverItem *>(item);
        qDebug() << "Identificatore" << QString::number(hover->getIdentifier());
        qDebug() << "Punto X" << QString::number(hover->x());
        qDebug() << "Punto Y" << QString::number(hover->y());
        update();
    }
    

    Adesso invece è:

    void TestHoverItem::mousePressEvent(QGraphicsSceneMouseEvent *e)
    {
        m_mouseIsDown = true;
        QGraphicsObject::mousePressEvent(e);
        QPoint point = e->scenePos().toPoint();
    
        auto sceneTop = scene();
    
        QGraphicsObject *item = sceneTop->itemAt(point.x(), point.y(),QTransform());
        TestHoverItem *hover = <TestHoverItem *>(item);
        qDebug() << "Id" << QString::number(hover->getIdPuntoDiMisurazioneTeorico());
        qDebug() << "Codice" << QString::number(hover->getIdentifier());
        qDebug() << "Punto X" << QString::number(hover->x());
        qDebug() << "Punto Y" << QString::number(hover->y());
    
        update();
    }
    
    Però la funzione itemAt ritorna un QGraphicItem e ovviamente il compilatore mi segnala errore. 
    Come potrei ovviare al problema?
    
    1 Reply Last reply
    0
    • B Offline
      B Offline
      Bruschetta
      wrote on last edited by
      #2

      Alla fine mi è bastato estendere la classe con public QObject.
      La prima volta non mi funzionava perchè afficnhè la modifica avesse effetto ho dovuto rebuildare tutto.

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved