Modifica da QGraphicsItem a QGraphicsObject



  • 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?
    


  • 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.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.