Oppure

Loading
29/03 19:13
Thejuster
Apro un topic magari qualcuno potrebbe darmi una mano.

Sto portando avanti il mio progettino,
Mi sono imbattuto alla fine nel dover per forza creare un editor di nodi.

è un pò una faticata ma sta uscendo bene.
il problema dove sta?

Gli elementi che ho creato sono tutti dinamici ed ovviamente hanno i loro comportamenti.
Qualsiasi oggetto presente.
Dal connettore, alla linea di collegamento ai vari output.

l'oggetto grafico lo inizializzo in questo modo

            GraphItem *temp = new GraphItem(QPixmap(":/empty.png"));
            temp->AddConnector(Connector::Output);
            temp->AddConnector(Connector::Output);
            temp->ApplyChanges();



Quello che sto tendando di fare ora, e quella di fare un override dell'oggetto grafico in modo da gestire il doppio click.
quindi


signals:
void DBCLICK();


protected:
    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override {
        if (event->button() == Qt::LeftButton) {

           emit DBCLICK();  
        }
        QGraphicsObject::mouseDoubleClickEvent(event);
    }





cosa succede ora?
Se provo a compilare in questo modo, non ho nessun errore.
Ma quando provo a connettere il segnale per poterlo gestire


connect(temp, &GraphItem::DBCLICK, this, [this](GraphItem *item) {

});



Ho un errore e mi dice di inseire alla classe del GraphItem la riga Q_OBJECT per la metaprogrammazione.

Appena inserisco questa riga,

:-1: error: debug/scenegenerator.o:scenegenerator:(.rdata$.refptr._ZTV9GraphItem[.refptr._ZTV9GraphItem]+0x0): undefined reference to `vtable for GraphItem'

ho un errore sulla vtable come se il metodo virtuale non fosse presente.
consigli su come risolvere?
Ultima modifica effettuata da Thejuster 29/03 19:15
mire.forumfree.it/ - Mire Engine
C# UI Designer
30/03 7:35
nessuno
Hai provato a pulire il progetto e ricompilare?

Clean Rebuild
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
30/03 8:06
Thejuster
eh...
Grazie mille nessuno. mi prenderei a schiaffi.
Sono stato tutta la serata a capire quale era il problema.
Avevo pensato che magari dovevo fare una pulizia dei file generati, ma non pensavo che dipendesse realmente da quello.

ancora grazie mille nessuno.
ho poi ampliato la funzione

signals:
    void dbclick(GraphItem *item);



inviando al segnale l'oggetto stesso in modo da poterlo gestire in seguito quando l'evento doppio click viene scatenato.
ero arrivato al punto nel pensare di scrivere una funzione di callback ma meglio così.
Ho evitato inutili sbattimenti di testa e il dubbio che nemmeno poteva funzionare.
Ultima modifica effettuata da Thejuster 30/03 8:08
mire.forumfree.it/ - Mire Engine
C# UI Designer